排序算法的稳定性

排序的稳定性:

在排序的过程中,相等的数的顺序不会被改变

 

(1)三个O(n^2)的排序算法:冒泡排序、插入排序、选择排序

         冒泡和插入都可以实现稳定性,但是选择排序无法实现稳定性

(2)O(n*logn)的排序算法:归并排序、快排、堆排

         归并可以,快排(普通)和堆排不可以

 

在工程中的综合排序:

(1)先判断数组中的类型

(2)如果数组中的是基础类型(byte,char,short,int,float,double,long),就会用快排

       (不用考虑数的先后顺序,相同数据没差异)

(3)如果数组中的是类型是类中的某个字段,那么系统就会用堆排

       (要考虑每个的先后顺序,相同数据有差异)

(4)如果数组长度<60,就会使用插入排序,O(n^2)还是很小,所以插入排序很快

 

看了左神的视频,左神讲的有关排序问题的补充:

(1)归并排序的额外空间复杂度可以变成O(1),但是非常难,不需要掌握,可以搜“归并排序  内部缓存法”

(2)快速排序可以做到稳定性问题,但是非常难,不需要掌握,可以搜“01 stable sort”

(3)有一道题目,是奇数放在数组左边,偶数放在数组右边,还要求原始数组的相对次序不变,碰到这个问题,可以怼面试官。面试官非良人。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值