算法练习bat----------07排序的稳定性和汇总

稳定性:假定有3,1,2,3,1,4,2,1

那么排完序就是1,1,1,2,2,3,3,4,那么稳定性就是能否保证上面的第一个3和第二个3,在排完序后先相对位置不变

  • 冒泡排序(能,O(N^2)):只要保证相同不交换就能保证稳定,例如:7,6,3,7,2,第一个7不断冒泡,遇到相同不交换,那么就能保证稳定性
  •  插入排序(能,O(N^2)):同样只要保证相同不交换即可,例如5,6,7数组,然后,来了一个6,6和7交换后,发现前一个也是6,那么结束插入
  • 选择排序(不能,O(N^2)):第一次从下标为0的开始下标为0的这个数与后面的n-1个进行比较;找出最小或者最大的放在下标为0的这个位置,例如5,5,5,5,4,0,1,那么第一次选择排序后,原先第一个5,就越过其他3个5,来到原先0 的位置

 

  • 归并排序(能,nlogN):只要保证左边相同的先放进入几个,例如左边3,3,4, 右边3,5,那么左边的两个3先放
  • 快速排序(不能,):
  • 堆排序:(不能,nlogN)

综合排序:例如当样本量很大的时候,

如果数组里面存的是基本数据类型,那么使用快排(因为快排其O(nlogn)隐藏的常数因子项小),

如果里面存的是自定义的类型,如Student等,那么使用归并排序,当归并的过程中,划分的子数组长度<60,则这部分使用插入排序(因为在数据量<60的情况下,插入排序最快),因为可能需要保留稳定性,

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值