十大排序面试

文章对比了不同类型的排序算法,包括基于时间复杂度的分析:平方阶如直接插入、选择和冒泡排序;线性对数阶如快速、堆和归并排序;线性阶的基数排序和特殊情况下的优化。还详细介绍了堆排序和归并排序的过程,以及希尔排序的分组插入策略和计数排序、桶排序的思想。
摘要由CSDN通过智能技术生成

各类排序算法对比

在这里插入图片描述

时间复杂度来说:

  1. 平方阶(O(n2))排序
      各类简单排序:直接插入、直接选择和冒泡排序;
  2. 线性对数阶(O(nlog2n))排序
      快速排序、堆排序和归并排序;
  3. O(n1+§))排序,§是介于0和1之间的常数。
    希尔排序
  4. 线性阶(O(n))排序
      基数排序,此外还有桶、箱排序。
    当原表有序或基本有序时,直接插入排序和冒泡排序将大大减少比较次数和移动记录的次数,时间复杂度可降至O(n);
    而快速排序则相反,当原表基本有序时,将蜕化为冒泡排序,时间复杂度提高为O(n2);
    原表是否有序,对简单选择排序、堆排序、归并排序和基数排序的时间复杂度影响不大。
    在这里插入图片描述

堆排序

堆:一种特殊的完全二叉树结构
大根堆: 一棵完全二叉树,满足任一节点都比其孩子节点大
小根堆: 一棵完全二叉树,满足任一节点都比其孩子节点小
堆的向下排序:假设根节点的左右子树都是堆,但根节点不
满足堆的性质可以通过一次向下的调整来将其变成一个堆。
堆排序的过程:
在这里插入图片描述
1.建立堆
2.得到堆顶元素,为最大元素
3.去掉堆顶,将堆最后一个元素放到堆顶,此时可通过一次调整重新使堆有序。
4.堆顶元素为第二大元素。
5.重复步骤直到堆变空。
时间复杂度:O(nlogn)
在这里插入图片描述

归并排序

分解:将列表越分越小,直至分成一个元素。
终止条件: 一个元素是有序的。
合并:将两个有序列表归并,列表越来越大。
一次归并: O(n)
在这里插入图片描述
归并排序:nlogn
在这里插入图片描述

希尔排序

是一种分组插入排序算法。
首先取整数d=n/2,将元素分为d个组,每组相邻量元素之间距离为d,在各组内进行直接插入排序;
取第二个整数d1=d/2,重复上述分组排序过程,直到dn=1,即所有元素在同一组内进行直接插入排序。希尔排序每趟并不使某些元素有序,而是使整体数据越来越接近有序,最后一趟排序使得所有数据有序。

计数排序

对列表进行排序,已知列表中的数范围都在0到100之间。复杂度为O(n).,是一种多关键字排序,先比较个位十位百位

桶排序

首先将元素分在不同的桶中,再对每个桶中的元素进行排序
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值