排序算法汇总

冒泡排序
基本思想:两两比较待排序的数,发现反序时交换,直到没有反序为止。

快速排序

基本思想:在待排序数列中任选出一个数作为基准,用这个基准将数列划分为左右两个子区,使得左子区的数都不大于基准数,而右子区的数都不小于基准数,称为完成第一次划分。如果左子区或右子区不为空,则对它进行同样的划分,直至为空为止。  

直接选择排序

基本思想:每次从无序数组中选出一个最小的出来,放到已排好序的数组的最后。

插入排序

基本思想:首先将数组的第一个数sortArray[0]看成是有序的,然后从第二个元素开始和它前面的元素进行比较,如果比前面的某一个数大,就交换。由于前面的元素是有序的,所以就使有序元素的个数逐渐增大,直到等于n。

希尔排序

基本思想:通过一个逐渐减小的增量使一个数组逐渐趋近于有序从而达到排序的目的。

堆排序

基本思想:记录区的分为无序区和有序区前后两部分;用无序区的数建大根堆,得到的根(最大的数)和无序区的最后一个数交换,也就是将该根归入有序区的最前端;如此重复下去,直至有序区扩展至整个记录区。

堆排序步骤:
第一步,根据初始输入数据,利用堆的调整算法形成初始堆。
第二步,通过一系列的记录交换和重新调整堆进行排序。
最大堆的向下调整算法:
调用了O(n)次Adjust()算法,堆排序的时间复杂性为O(nlog2n)。
该算法的附加存储主要是执行记录交换时所用的一个临时记录。
因此,该算法的空间复杂性为O(1)。
堆排序是一个不稳定的排序方法。

 

 

posted @   raysbo  阅读(398)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示