func Test_QuickSort(t *testing.T) { a := []int{4,0,1,9,5,2,10,30,2,100,800} //a := []int{5,6,8,7,1} quickSort(a,0,len(a)-1) fmt.Println(a) } func quickSort(A []int,start,end int) { if end - start <= 1{ swap(A,start,end) return } obj := A[start] left := start + 1 right := end for left < right { if A[right] < obj && A[left] > obj { swap(A,left,right) right-- continue } if A[right] >= obj { right-- continue } if A[left] <= obj { left++ continue } } if left == right { swap(A,start,left) if A[start] < A[left] { quickSort(A,start,left-1) quickSort(A,left,end) } else { quickSort(A,start,left) quickSort(A,left+1,end) } } } func swap(A []int,left,right int) { if A[left] > A[right] { temp := A[left] A[left] = A[right] A[right] = temp } }
快速排序的Go语言实现
最新推荐文章于 2024-07-31 13:34:33 发布