快速排序算法的思想/特点
1.选取一个数字作为基准,(基数可以随机取,也可选取首位数字)
2.将数列第一位开始,依次与此数字比较,如果小于此数,将小数交换到左边,最后达到小于基准数的在左边,大于基准数的在右边,分为两个数组
3.分别对两个数组重复上述步骤
快速排序算法的时间复杂度:平均时间:O(nlog2n) (n倍的以2为底n的对数), 最坏情况:O(n2) ;
对于大的、乱序串列一般认为是最快的已知排序
稳定性:不稳定
python实现快速排序算法的代码
def partition(arr, low, hight): i = low - 1 for j in range(low, hight): if arr[j] <= arr[hight]: i = i + 1 arr[i], arr[j] = arr[j], arr[i] arr[i + 1], arr[hight] = arr[hight], arr[i + 1] return i def quick_sort(l, low, hight): if low < hight: key_Index = partition(l, low, hight) quick_sort(l, low, key_Index) quick_sort(l, key_Index + 1, hight) else: return l = [5,8,1,3,15,12,0] quick_sort(l, 0, len(l) - 1) print("after sort:", l) # 运行后的结果为:after sort: [0, 1, 3, 5, 8, 12, 15]