如何分析一个排序算法及常见问题

如何分析一个排序算法?
  1. 算法的执行效率:
    最好、最坏、平均时间复杂度(对于同一阶时间复杂度的排序算法性能对比可能会把系数、常数和低阶考虑到)基于比较的排序算法执行的适合会涉及到元素比较大小和元素的移动与交换,所以分析效率的时,比较次数、交换或者移动的次数也可以考虑进去
  2. 排序算法的内存消耗
    原地排序,指空间复杂度是 O(1) 的排序算法。
  3. 排序算法的稳定性
    待排序序列中存在值相等的元素,经过排序之后,相等元素之间原有的先后顺序不变。eg:2 5 6 3 3 7 1;这组数据由两个3,如果经过排序算法后,两个3的亲啊后顺序没有改变,那么这种排序算法叫稳定的排序算法,反之不稳定。为什么还要考虑稳定性?一些稳定的算法代码的实现会更简洁
  4. 应用场景
  5. 内排序和外排序
    内部排序(一次性可以将所有数据加载到内存中进行排序) 海量数据怎么处理
    外部排序: 数据不需要一次加载到内存
几种排序算法的性能分析

在这里插入图片描述

常见问题
  1. 冒泡排序和插入排序的时间复杂度都是O(n^2),为什么插入排序比冒泡排序更加受欢迎?
    冒泡排序不论怎么优化,交换次数都是固定的,是原始数据的逆序度。而插入排序是无论怎么优化,元素一定的次数也是原始数据的逆序度。但是从代码层面看,冒泡排序的数据交换要比插入排序的数据移动更加复杂,冒泡需要三个赋值操作,而插入

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值