八大排序算法总结(详细介绍、稳定性问题、优先使用问题以及掌握程度)

选择排序

简单选择排序详解

堆排序详解

 

交换排序

冒泡排序详解

快速排序详解

 

插入排序

直接插入排序详解

二分插入排序详解

希尔排序详解

 

归并排序详解

基数排序详解

 

稳定性相关问题:

首先要知道所谓稳定性指的是 r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前

算法名称稳定性
冒泡排序稳定
插入排序稳定
归并排序稳定
基数排序稳定
选择排序不稳定
快速排序不稳定
希尔排序不稳定
堆排序不稳定

冒泡稳定的原因 在冒泡算法中当前元素大于后边元素才会交换位置 如果当前位置元素等于后边元素 位置是不发生改变的

插入排序 因为是遍历之前元素与之进行比较 插入在小于等于他元素的后边 所以也是稳定的

归并排序 在合并的时候是左边数组和右边数组进行比较 <=则放进去 所有也是稳定的

基数排序 采用队列先进先出的顺序 所以也是稳定的

 

排序算法的选择:

在数据量小的时候 使用那个我个人觉得都无所谓数据量小没有太大的差别

如果对稳定性有要求 可以使用冒泡 插入 

如果对稳定性没要求 可以使用简单选择

在数据量大的时候

如果对稳定性有要求 可以使用归并排序

如果对稳定性没要求 可以使用堆排序

 

掌握程度问题:

冒泡 直接插入 简单选择 快排   这些都应该能做到能手写才行当然都能手写更好

特别是快排 面试出现频率高 而且jdk 自带的Arrays.sort() 方法用的就是快排

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值