下述python代码实现了快速排序算法,下面说法错误的是( )。
def partition(arr, low, high):
i, j = low, high
while i < j:
while i < j and arr[j] >= arr[low]:
j -= 1
while i < j and arr[i] <= arr[low]:
i += 1
arr[i], arr[j] = arr[j], arr[i]
arr[i], arr[low] = arr[low], arr[i]
return i
def quickSort(arr, low, high):
if low < high:
pivot = partition(arr, low, high)
quickSort(arr, low, pivot - 1)
quickSort(arr, pivot + 1, high)
快速排序平均情况下比归并排序的比较、赋值、交换等操作的总数量少,所以命名为“快速”。
在平均情况下,划分的递归层数为 O(log n),每层中的总循环数为 O(n),总时间为 O(n log n)。
在最差情况下,每轮划分操作都将长度为 n 的数组划分为长度为 0 和 n-1 的两个子数组,此时递归层数达到 n,每层中的循环数为 n,总时间为 O(n^2)。
划分函数中“从右往左查找”与“从左往右查找”的顺序可以互换。