golang 快速排序

package hsort

func Qsort(arr []int, left, right int) {
	//先对比左右下标的值是否是左小右大
	if left < right {
		mid := getMid(arr, left, right)
		Qsort(arr, left, mid-1)  //将左半边递归
		Qsort(arr, mid+1, right) //将右半边递归
	} //if end

}
func getMid(arr []int, left, right int) int {
	povit := arr[left]
	for left < right {
		for arr[right] >= povit && left < right {
			right--
		}
		//交换
		arr[left], arr[right] = arr[right], arr[left]
		for arr[left] <= povit && left < right {
			left++
		}
		//交换
		arr[left], arr[right] = arr[right], arr[left]
	}
	arr[left] = povit
	return left
}

你可能感兴趣的:(Golang)