十大排序算法之非线性时间比较类排序

本文介绍了从冒泡排序到基数排序的十大排序算法,按非线性时间比较和线性时间非比较分为两大类。重点讲述了交换类、插入类、选择类和归并排序,以及快速排序和堆排序的特性。
摘要由CSDN通过智能技术生成

前言

接下来就开始我们的算法学习之路了,代码会分别使用Java与Python来实现,数据处理的算法很多,排序是最基础且最重要的一类,大多数人都是通过学习排序算法入门的。接下来让我们一起学习闻名遐迩的十大排序算法,它们分别是冒泡排序、快速排序、直接插入排序、希尔排序、简单选择排序、堆排序、归并排序、计数排序、桶排序和基数排序。这十大排序算法可以大致为两类:非线性时间比较类排序和线性时间非比较类排序,如下图所示。
在这里插入图片描述

所谓线性时间并不是“按照时间顺序讲述故事”的方式,而是与时间复杂度相关的词条。在计算复杂性理论中,如果实现某算法所需要的时间与输入数据的大小成正比的线性关系,则教该算法为线性时间的算法,或者 O ( n ) O(n) O(n)时间的算法:比较类则是指在排序过程中通过元素之间的相互比较进行位置和值的交换。

非线性时间比较类排序

非线性时间比较类排序包括冒泡排序、快速排序、直接插入排序和希尔(Shell)排序、简单选择排序、堆排序和归并排序,而这七种算法又可分为四大类型:

  • 交换类排序,如冒泡排序和快速排序;
  • 插入类排序,如直接插入排序和希尔排序;
  • 选择类排序,如简单选择排序和堆排序;
  • 归并排序。

其中,归并排序号称计算速度最快,快速排序和堆排序次之。快速排序和堆排序二者在计算速度上其实并没有差别,只是数据的初始排序状态会对快速排序产生较大影响,而对堆排序则没有影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忆梦九洲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值