golangでのクイックソートアルゴリズムの実装方法は何ですか?

Golangのクイックソートアルゴリズムは、次の手順で実装できます。

  1. 配列の要素から基準要素を1つ選択します。通常、最初の要素を基準要素として選択します。
  2. 基準要素より小さい部分を左に、大きい部分を右に分ける。
  3. 左右の2つの部分を再帰的にクイックソートする。

以下是一个示例代码的实现:

package main

import "fmt"

func quickSort(arr []int, low, high int) {
	if low < high {
		pivot := partition(arr, low, high)
		quickSort(arr, low, pivot-1)
		quickSort(arr, pivot+1, high)
	}
}

func partition(arr []int, low, high int) int {
	pivot := arr[low]
	for low < high {
		for low < high && arr[high] >= pivot {
			high--
		}
		arr[low] = arr[high]

		for low < high && arr[low] <= pivot {
			low++
		}
		arr[high] = arr[low]
	}
	arr[low] = pivot
	return low
}

func main() {
	arr := []int{9, 5, 7, 3, 1, 6, 0, 8, 4, 2}
	quickSort(arr, 0, len(arr)-1)
	fmt.Println(arr)
}

上記の例のコードでは、quickSort関数がクイックソートアルゴリズムを実装し、partition関数が配列を分割して基準要素の最終位置を返します。main関数では、整数の配列を定義し、quickSort関数を呼び出して並べ替えを行います。最後に並べ替えた結果を出力します。

bannerAds