五大排序(面试问题汇总)

一、简单描述五大排序(以从小到大排序为例)

1.冒泡排序

       从前往后遍历n遍数组。第一遍可以将最大值被换到最后一个位置。第二遍可以将第二大的数换到倒数第二个。依次类推将数组遍历n次。

2.快速排序

       找一个参考值,可以是数组的最左边,可以是最右边,可以是中间,也可以是用randrom函数随机产生的一个位置。比这个位置上的数小的全放在这个位置的左边,大的全放在右边。

3.插入排序

       可以类比于打扑克的时候整理牌。手里的牌是整理好的,拿起一张没有整理的牌,从左往右看,找到第一个比它大的,放在这张大牌前面。

      换到数组上面就是数组左边是整理好的顺序,数组右边是还没有整理好的。从右边第一个数开始依次按照整牌的原理插入到左边(找第一个比它大的,放在大数前面)。

4.选择排序

    从数组中选出最小的放入序列。

   选出第二小的放在序列第二位。

   依次类推。

5.归并排序

        一分为二,不停地往下分,直到都变成只包含一个数的数组。然后开始合并,使用双指针法。两个指针分别指向两个要合并的 数组的第一位。小的被放入序列,指针往后移一位。(可以在b站找一下视频更易于理解)。

二、是否稳定

是否稳定是排序算法最经常被问到的问题。

这五个里面插冒归是稳定的(谐音插帽龟)其余不稳定

三、算法复杂度

选冒插  o(n^2)

快归o(nlogn)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值