1.快速排序算法
在平均状况下,排序n个项目需要O(nlogn)次比较,在最坏情况下则需要O(n^2)次比较。快速排序通常明显比其他算法要快。以为内它的内部循环可以在大部分的架构上很有效率地被实现出来
快速排序使用分治法策略来把一个串行分为两个字串行
算法步骤
1.从数列中挑出一个元素成为基准
2.重新排列数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值打的摆在基准的后面(相同的数可以到任一边),在这个分区退出后,该基准就处于数列的中间位置,这个称为分区(partition)操作
3.递归地把小于基准值元素的子数列和大于基准值元素的子数列排序
递归的最底部情形,是数列的大小是零或一,也及时永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退出,因为每次迭代中,他至少会把一个元素拜倒他最后的位置去。
2.堆排序算法
堆排序是指利用堆这种数据结构所设计的一种非排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质