摘要:
1.比较排序:快速排序、堆排序、归并排序、插入排序等。基于比较的排序时间复杂度下限为O(n log n)2 线性时间排序:计数排序、基数排序、桶排序等3 稳定排序--快速排序在主元元素a[r]和a[i+1]交换的时候,很有可能把前面的元素的稳定性打乱,比如序列为3 35 4 3 8 9 10 1,主元为1,第一轮划分后为1 3 3 5 4 3 8 9 10 3,把最开始的3换到了最后,元素3的稳定性打乱,所以快速排序是一个不稳定的排序算法,不稳定发生在中枢元素和a[i+1] 交换的时刻。所以快速排序是不稳定的。---插入排序 插入排序是在一个已经有序的小序列的基础上,一次插入一个元素。当然,刚 阅读全文
摘要:
1.快速排序快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists)。步骤为:1.从数列中挑出一个元素,称为 "基准"(pivot), 2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分割之后,该基准是它的最后位置。这个称为分割(partition)操作。 3.递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。最坏时间复杂度: O(n^2),平均时间复杂度:O(nlogn) 快速排序是不稳定的排序算法。#i 阅读全文