直接插入排序、希尔排序、冒泡排序、快速排序、简单选择排序和归并排序等几种排序算法的基本思想、代码实现和性能对比

查找和排序都是在程序设计中经常用到的算法;对于插入排序、冒泡排序、归并排序、快速排序和简单选择排序等不同算法的优劣的对比不论在考试还是在面试过程中都占据相当重要的地位,所以我们一定要对各种排序算法的特点了如指掌,并能够从额外空间消耗、平均时间复杂度和最差时间复杂度等方面比较他们的有缺点,同时能够迅速写出各算法的代码。

这里,我将详细的总结一下直接插入、希尔排序、起泡排序、快速排序、简单选择排序和归并排序这6中排序算法的基本思想、代码实现以及从几个方面进行性能对比。

一,内排序分类
内排序:指在排序期间数据对象全部放在内存的排序。分类如下:
①依据排序策略的不同
插入排序:直接插入、希尔排序、折半插入、表插入、2-路插入等
交换排序:冒泡排序、快速排序
选择排序:简单选择排序、树形选择排序、堆排序
归并排序
基数排序
②依据时间复杂度
O(n^2):简单选择算法
O(nlogn):先进排序算法
O(d(n+rd)):基数排序算法

二,排序算法的性能评价指标
评价算法的好坏通常的标准:①执行时间和所需要的辅助空间(时间复杂度和空间复杂度)②算法本身的复杂程度;当然,排序算法也是如此。
排序算法空间复杂度中,还有两个名词。若排序算法所需的辅助空间并不依赖于问题的规模n,即辅助空间是O(1),称就地排序;反之成非就地排序。
排序算法的时间开销,主要是关键字之间的比较和记录的移动。排序算法的执行时间不仅依赖于问题的规模,还取决于数据序列中数据的初始状态(后面会提到,几种情况下排序算法的时间复杂度)。

三,六大排序算法的性基本思想、代码实现和性能分析汇总
①直接插入排序
https://blog.csdn.net/qq_45043381/article/details/107353316直接插入排序的基本思想、基本操作、代码实现以及性能分析总结

②希尔排序
https://blog.csdn.net/qq_45043381/article/details/107356940希尔排序的基本思想、代码实现以及性能分析总结

③快速排序
https://blog.csdn.net/qq_45043381/article/details/107336688快速排序算法的思想、实现代码与性能分析总结

④冒泡排序
https://blog.csdn.net/qq_45043381/article/details/107392946冒泡排序的基本思想、基本操作、代码实现以及性能分析总结

⑤简单选择排序
https://blog.csdn.net/qq_45043381/article/details/107434849简单选择排序算法的思想、实现代码与性能分析总结

⑥归并排序
https://blog.csdn.net/qq_45043381/article/details/107518668归并排序的基本思想、代码实现以及性能分析总结

四,性能分析与对比
下面我重点分析一下快速排序算法在不同情况下的性能;据说,在面试的时候,应聘者经常被问道不同算法的优劣;从额外空间消耗、平均时间复杂度和最差时间复杂度等方面让被面试者分析算法的优缺点。
①平均时间性能
O(nlogn):
快速排序,堆排序和归并排序
O(n^2):
直接插入排序、冒泡排序和简单选择排序
O(d(n+rd):
基数排序
O(n^(1+a)) (0<a<1):
希尔排序

②空间性能
指排序过程中所需的辅助空间大小。
O(1):
直接插入排序,冒泡排序和简单选择排序,以及希尔排序和堆排序
O(logn):
快速排序(为递归程序执行过程中栈所用辅助空间)
O(n):
归并排序
O(rd):
链式基数排序(需要附设队列首位指针)

附图:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值