ホームページ  >  記事  >  バックエンド開発  >  Golang のバブリングをランク付けする方法

Golang のバブリングをランク付けする方法

WBOY
WBOYオリジナル
2023-05-10 11:52:061089ブラウズ

Golang バブル ソート アルゴリズムの詳細説明

バブル ソートは一般的なソート アルゴリズムであり、その原理は非常に単純で、交換ソートの一種です。このアルゴリズムの中心となるアイデアは、隣接する 2 つの要素のサイズを比較し、サイズの関係に従ってそれらの位置を交換することであり、各ラウンドで最大または最小の要素がシーケンスの一端に配置されます。具体的な実装方法は 2 つあります。1 つは前から後ろへ、もう 1 つは後ろから前へです。この記事では、golang でのバブルソートの実装を紹介します。

まず、整数配列を作成し、バブル ソート関数に渡します。

package main

import "fmt"

func main() {
    arr := []int{3, 7, 1, 4, 2, 8, 5, 9, 6}
    fmt.Println("排序前:",arr)
    BubbleSort(arr)
    fmt.Println("排序后:",arr)
}

func BubbleSort(arr []int) {
    n := len(arr)
    for i := 0; i < n-1; i++ {
        for j := 0; j < n-1-i; j++ {
            if arr[j] > arr[j+1] {
                arr[j], arr[j+1] = arr[j+1], arr[j]
            }
        }
    }
}

BubbleSort 関数では、まず配列の長さを取得し、次に 2 つのループ ネストを設定します。外側のループは配列全体に対するループであり、内側のループは要素に対するループです。内側のループでは、隣接する要素のサイズを比較し、サイズの関係に基づいてそれらの位置を交換します。

交換メソッドは、golang の複数の代入、つまり「arr[j], arr[j 1] = arr[j 1], arr[j]」によって実装されます。このステートメントは、arr[j 1] の値を arr[j] に割り当て、arr[j] の値を arr[j 1] に割り当てます。このようにして、2 つの要素間の交換を完了できます。

ソートの各ラウンドでは、最小または最大の要素がシーケンスの一端に移動されることに注意してください。効率を確保するには、外側のループでソートされた要素の数 i を減算する必要があります (つまり、「for j := 0; j

最後に、main 関数で BubbleSort 関数を呼び出し、並べ替えの前後の配列結果をコンソールに出力します。

次に、このアルゴリズムのパフォーマンスをテストします。テストには golang 独自のテスト ライブラリを使用できます。具体的なテスト コードは次のとおりです。

package main

import (
    "testing"
)

func TestBubbleSort(t *testing.T) {
    arr := []int{3, 7, 1, 4, 2, 8, 5, 9, 6}
    BubbleSort(arr)
    if !checkSort(arr) {
        t.Error("BubbleSort test failed")
    }
}

func checkSort(arr []int) bool {
    n := len(arr)
    for i := 0; i < n-1; i++ {
        if arr[i] > arr[i+1] {
            return false
        }
    }
    return true
}

main 関数では、作成した BubbleSort 関数の正確さをテストするために使用される TestBubbleSort という関数を定義します。テスト関数では、BubbleSort 関数を呼び出し、checkSort 関数を使用して並べ替え結果が正しいかどうかを判断します。ソート結果が正しくない場合は、「BubbleSort テストに失敗しました」というエラーメッセージが出力されます。

次に、 go test コマンドを使用してテストを実行します。コマンド ラインに次のコマンドを入力します。

go test -v -run="TestBubbleSort"

このコマンドは、TestBubbleSort 関数を実行し、テスト結果をコンソールに出力します。結果は次のとおりです。

=== RUN   TestBubbleSort
--- PASS: TestBubbleSort (0.00s)
PASS
ok      _/home/go_ws/src/gotest/src/TestBubbleSort   0.097s

テスト結果からわかるように、ソート アルゴリズムは単体テストに合格し、テスト時間はわずか 0.097 秒でした。したがって、バブル ソート アルゴリズムは効率の点で優れたパフォーマンスを発揮します。

概要

この記事では、golang でのバブル ソートの実装を紹介し、単体テストを通じてソート アルゴリズムの正確さと効率性を検証します。実際のアプリケーションでは、必要に応じてこのアルゴリズムを適切に最適化し、より良い並べ替え結果を達成できます。

以上がGolang のバブリングをランク付けする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。