首页 > 编程语言 > 详细

排序算法归类总结

时间:2019-05-11 22:01:12      阅读:139      评论:0      收藏:0      [点我收藏+]

基本排序算法:

1、冒泡排序:此为基础中的基础,从头开始遍历,将路上的最大或最小元素“转移”至最左侧或者最右侧,冒泡之名就是这么来的 —— 一个一个的冒头。

2、插入排序:分为直接插入排序、折半插入排序以及希尔排序,希尔排序在后面会讲到,此处略过。

插入排序的思想很简单,就像玩扑克牌,手中一开始没有牌,从发给自己的牌堆中一张一张的拿出来然后放到手中,直接放到最终的位置。

3、选择排序

直接选择排序:在待排数组中直接查找到最小的,然后与第一个元素交换位置,后面再从第2~n个元素中查找最小的与第2个元素交换位置,以此类推完成排序。

进阶排序算法:

归并排序:将待排数组分为多个互不相交的较小子数组,分别对其进行排序然后再进行合并

  合并方法:两个子数组各取一个元素a、b,将较小的(设a<b)放到目标区域,然后再从a所在的小数组拿一个,再次与b比较,最后如果有一堆有剩下的,直接放在后面即可。

快速排序:与归并排序相似,也是分为多个互不相交的较小子数组,分别对其进行排序然后再进行合并,不同之处在于归并排序的分解是随便的,而快速排序的分解则是有迹可循的,待排数组所分解得到的两个子数组,肯定某个子数组的所有元素均小于另一个子数组的所有元素。

希尔排序:分为三步,①将待排序列分组;②对每组数据进行直接插入排序;③对整个序列进行直接插入排序。(分组方法:给定一个步长d,下标相差d的元素分到一个组,每次子序列排好序后缩小d)

线性时间排序算法:

计数排序:对于已知元素取值范围的序列,可记录小于等于某个元素的元素个数,这样遍历一遍即可得到每个元素的最终位置,达到线性时间的算法时间复杂度。

桶排序:运用了区间的思想,将所有元素所在的大区间分为多个不同的小区间,分别对各个区间的元素进行排序,然后进行合并。

基数排序:对序列中元素的各个位进行排序,排序方法分为MSD(最高位优先方法,从左向右,即高位到低位)和LSD(最低位优先方法,从右向左,即低位到高位)。

排序算法归类总结

原文:https://www.cnblogs.com/hfut-zxq/p/10850147.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!