排序总结

排序总结:

稳定的排序算法如下表所示:   

稳定的排序

时间复杂度

空间复杂度

冒泡排序(bubble sort)

最差、平均都是O(n^2),最好是O(n)

1

插入排序(insertion sort)

最差、平均都是O(n^2),最好是O(n)

1

归并排序(merge sort)

最差、平均、最好都是O(n log n)

O(n)

桶排序(bucket sort)

O(n)

O(k)

基数排序(Radix sort)

O(dn)d是常数)

O(n)

二叉树排序(Binary tree sort)

O(n log n)

O(n)

不稳定的排序算法如下表所示: 

不稳定的排序

时间复杂度

空间复杂度

选择排序(selection sort)

最差、平均都是O(n^2)

1

希尔排序(shell sort)

O(n log n)

1

堆排序(heapsort)

最差、平均、最好都是O(n log n)

1

快速排序(quicksort)

平均是O(n log n),最差是O(n^2)

O(log n)



1、  冒泡排序:

①   思想:反复扫描待排序序列,在扫描的过程中顺次比较相邻的两个元素的大小,若逆序就交换位置。第一趟,从第一个数据开始,比较相邻的两个数据,(以升序为例)如果大就交换,得到一个最大数据在末尾;然后进行第二趟,只扫描前n-1个元素,得到次大的放在倒数第二位。以此类推,最后得到升序序列。如果在扫描过程中,发现没有交换,说明已经排好序列,直接终止扫描。所以最多进行n-1趟扫描。

②   时间复杂度:T(n) = O(n²)

③   空间复杂度:S(n) = O(1)

④   稳定性:稳定排序。

2、  快速排序:

①   思想:冒泡排序一次只能消除一个逆序,为了能一次消除多个逆序,采用快速排序。以一个关键字为轴,从左从右依次与其进行对比,然后交换,第一趟结束后,可以把序列分为两个子序列,然后再分段进行快速排序,达到高效。

②   时间复杂度:平均T(n) = O(nn),最坏O(n²)

③   空间复杂度:S(n) = O(n)

④   稳定性:不稳定排序。{3 2 2}

3  简单选择排序:

①   思想:第一趟时,从第一个记录开始,通过n – 1次关键字的比较,从n个记录中选出关键字最小的记录,并和第一个记录进行交换。第二趟从第二个记录开始,选择最小的和第二个记录交换。以此类推,直至全部排序完毕。

②   时间复杂度:T(n) = O(n²)

③   空间复杂度:S(n) = O(1)

④   稳定性:不稳定排序,{3 3 2}

 4堆排序:

①   思想:把待排序记录的关键字存放在数组r[1…n]中,将r看成是一刻完全二叉树的顺序表示,每个节点表示一个记录,第一个记录r[1]作为二叉树的根,一下个记录r[2…n]依次逐层从左到右顺序排列,任意节点r[i]的左孩子是r[2i],右孩子是r[2i+1],双亲是r[i/2向下取整]。然后对这棵完全二叉树进行调整建堆。

②   时间复杂度:T(n) = O(nn)

③   空间复杂度:S(n) = O(1)

④   稳定性:不稳定排序。{5 5 3}

5  归并排序:

①   思想:假设初始序列右n个记录,首先将这n个记录看成n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2向上取整 个长度为2n为奇数时,最后一个序列的长度为1)的有序子序列。在此基础上,在对长度为2的有序子序列进行两两归并,得到若干个长度为4的有序子序列。如此重复,直至得到一个长度为n的有序序列为止。

②   时间复杂度:T(n) = O(nn)

③   空间复杂度:S(n) = O(n)

④   稳定性:稳定排序。

6  直接插入排序:

①   思想:最基本的插入排序,将第i个插入到前i-1个中的适当位置。

②   时间复杂度:T(n) = O(n²)

③   空间复杂度:S(n) = O(1)

④   稳定性:稳定排序。循环条件while(r[0].key < r[j].key)保证的。

7  折半插入排序:

①   思想:因为是已经确定了前部分是有序序列,所以在查找插入位置的时候可以用折半查找的方法进行查找,提高效率。

②   时间复杂度:比较时的时间减为O(nn),但是移动元素的时间耗费未变,所以总是得时间复杂度还是O(n²)

③   空间复杂度:S(n) = O(1)

④   稳定性:稳定排序。

8希尔排序:

①   思想:又称缩小增量排序法。把待排序序列分成若干较小的子序列,然后逐个使用直接插入排序法排序,最后再对一个较为有序的序列进行一次排序,主要是为了减少移动的次数,提高效率。原理应该就是从无序到渐渐有序,要比直接从无序到有序移动的次数会少一些。

②   时间复杂度:O(n1.5次方)

③   空间复杂度:O(1)

④   稳定性:不稳定排序。{2,4,1,2}21一组42一组,进行希尔排序,第一个2和最后一个2会发生位置上的变化。

9 树形选择排序:

①   思想:为了减少比较次数,两两进行比较,得出的较小的值再两两比较,直至得出最小的输出,然后在原来位置上置为∞,再进行比较。直至所有都输出。

②   时间复杂度:T(n) = O(nn)

③   空间复杂度:较简单选择排序,增加了n-1个额外的存储空间存放中间比较结果,就是树形结构的所有根节点。S(n) = O(n)

④   稳定性:稳定排序。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值