数据结构插入排序希尔排序直接选择排序归并排序基数排序

Posted Crucian软件技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构插入排序希尔排序直接选择排序归并排序基数排序相关的知识,希望对你有一定的参考价值。

直接插入排序

就是赶着往里插,赶着就排好了。

( )是不断增大的,∵一个一个元素往里插,插完了比较大小,一趟插一个,直到最后一个元素插完,就排好了。

时间复杂度:O(n^2) 稳定性:稳定

【举个例子】

折半插入排序

时间复杂度:O(n^2) 稳定性:稳定

折半插入排序每一趟的结果和直接插入排序的结果是一样的,折半插入只是减少了比较元素的次数。

直接插入:(已经排好的元素)←新插的元素,它们一个一个的比较,排出大小来。

折半插入:(已经排好的元素)←新插的元素,新插的元素要和括号里已排好的元素集合的中间的元素进行比较,比中间那个元素大的往右边摆,比中间那个元素小的往左摆。就这么多次进行折半排序直到找到自己的位置。这样会比直接一个一个的比较减少了比较次数。


希尔排序(shell排序)

又叫缩小增量排序,也属于插入类排序。

这个增量d的选取没有固定的方法,但一般我们题目采取d2=(d1)/2,

增量d的第二趟选取第一趟的一半(注:5/2=3,四舍五入的)。

时间复杂度:O(n^(1.3—2))<这个一般不考>  

稳定性:不稳定

【举个例子】

数据结构插入排序、希尔排序、直接选择排序、归并排序、基数排序

数据结构插入排序、希尔排序、直接选择排序、归并排序、基数排序

数据结构插入排序、希尔排序、直接选择排序、归并排序、基数排序

直接选择排序

每一趟从待排序的数据元素中选出最小(最大)的元素,顺序放在待排序的数列最前,直到待排序的数据元素全部排完。

时间复杂度:O(n^2)   稳定性:不稳定

【举个例子】

数据结构插入排序、希尔排序、直接选择排序、归并排序、基数排序


归并排序

先两个两个的比较,再两组两组的比较。

时间复杂度:O(nlog2  n) 稳定性:稳定


基数排序(筒子法)

多个依据,多个维度去排序,主要是通过比较关键字和移动记录(挪记录)来实现。基数排序不需要进行记录关键字间的比较。

最低位优先法(LSD):先比较个位再比较十位在比较百位……

最高位优先发(MSD):先比较最高位再比较次高位……最后比较个位。

时间复杂度:O(d*(rd+n))  稳定性:稳定

【举个例子】

对元素进行从小到排序,基数r=10位数d=4,写出基数排序的各趟。



声明:举例子的图片是我画的,看不清楚请联系我发个清楚的。

封面图片来源于互联网,如有侵权请通知我删了它。

以上是关于数据结构插入排序希尔排序直接选择排序归并排序基数排序的主要内容,如果未能解决你的问题,请参考以下文章

排序算法之希尔归并堆和基数排序

C# 各种内部排序方法的实现(直接插入排序希尔排序冒泡排序快速排序直接选择排序堆排序归并排序基数排序)

C# 各种内部排序方法的实现(直接插入排序希尔排序冒泡排序快速排序直接选择排序堆排序归并排序基数排序)

学习数据结构笔记====>不同的排序算法(Sort Algorithm)[冒泡,选择,插入,快速,希尔,基数,归并]

插入排序(直接插入排序希尔排序);交换排序(冒泡排序快速排序);选择排序(简单选择排序堆排序);归并排序和基数排序;基于关键词比较的排序算法下界分析

排序---内部排序算法(快排希尔排序归并排序基数排序冒泡选择排序)比较