defquick_sort(arr, l, r): if l < r: left, right = l, r base = arr[left] while left < right: while left < right and base <= arr[right]: right -= 1 while left < right and base >= arr[left]: left += 1 if left < right: arr[left], arr[right] = arr[right], arr[left] if l != left: arr[l], arr[left] = arr[left], arr[l] print('以%2d为基准数排序后数组为:%s' % (base, arr)) quick_sort(arr, l, left - 1) quick_sort(arr, right + 1, r)
funcQuickSort(arr *[15]int, l, r int) { if l < r { left, right := l, r base := arr[left] // 以最左边的数作为基准数 for left < right { for left < right && base <= arr[right] { // 先从右往左找大于基准数的位置 right-- } for left < right && base >= arr[left] { // 再从左往右找小于基准数的位置 left++ } if left < right { arr[left], arr[right] = arr[right], arr[left] // 交换找到的大于和小于基准数的两个数的位置 } } if l != left { arr[l], arr[left] = arr[left], arr[l] // 交换基准数和(left=right)的位置 } fmt.Printf("以%2d为基准数排序后数组为:%v\n", base, *arr) QuickSort(arr, l, left-1) // 递归左边 QuickSort(arr, right+1, r) // 递归右边 } }