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 独自のテスト ライブラリを使用できます。具体的なテスト コードは次のとおりです。 main 関数では、作成した BubbleSort 関数の正確さをテストするために使用される TestBubbleSort という関数を定義します。テスト関数では、BubbleSort 関数を呼び出し、checkSort 関数を使用して並べ替え結果が正しいかどうかを判断します。ソート結果が正しくない場合は、「BubbleSort テストに失敗しました」というエラーメッセージが出力されます。 次に、 go test コマンドを使用してテストを実行します。コマンド ラインに次のコマンドを入力します。 このコマンドは、TestBubbleSort 関数を実行し、テスト結果をコンソールに出力します。結果は次のとおりです。 テスト結果からわかるように、ソート アルゴリズムは単体テストに合格し、テスト時間はわずか 0.097 秒でした。したがって、バブル ソート アルゴリズムは効率の点で優れたパフォーマンスを発揮します。 概要 この記事では、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
}
go test -v -run="TestBubbleSort"
=== RUN TestBubbleSort
--- PASS: TestBubbleSort (0.00s)
PASS
ok _/home/go_ws/src/gotest/src/TestBubbleSort 0.097s
以上がGolang のバブリングをランク付けする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。