八大排序

八大排序介绍

1、插入排序:直接插入排序、希尔排序。
2、选择排序:直接选择排序、堆排序。
3、交换排序:冒泡排序、快速排序。
4、归并排序。
5、基数排序。
在这里插入图片描述
1、直接插入排序:将数组中的所有元素依次跟前面已经排好的元素相比较,如果选择的元素比已排序的元素小,则交换,直到全部元素都比较过为止。
https://cuijiahua.com/wp-content/uploads/2017/12/algorithm_2_1.gif

2、希尔排序:
1)将数的个数设为n,取奇数k=n/2,将下标差值为k的数分为一组,构成有序序列;

   2)再取k=k/2 ,将下标差值为k的书分为一组,构成有序序列;

   3)重复第二步,直到k=1执行简单插入排序。

3、直接选择排序:
遍历整个序列,将最小的数放在最前面。
遍历剩下的序列,将最小的数放在最前面。
重复第二步,直到只剩下一个数。

4、堆排序:
什么是堆:堆排序分为大根堆和小根堆两种形式,顾名思义,我们可以把它理解为一个堆(如果学过树的知识,我们可以把它理解为一个完全二叉树),大根堆就是堆顶的数为最大,在二叉树中我们可以定义双亲节点的值大于其子节点的值,从上往下以此类推;小根堆就是双亲节点小于其左右子节点。

堆排序的步骤:先建立一个初始堆,即按照数组的序号从上到下,从左到右,建立一个类似完全二叉树的结构,但节点之间没有指针关系,只是把数组摆成了堆的形式。接下来从下到上调整堆,分别拿双亲节点和子节点比较大小,如果双亲节点小于最大子节点,则交换位置,最后我们会得到一个初始的大根堆。接下来我们把堆顶元素(最大)和数组的最后一个元素交换位置,除此最后一个数外,我们继续调整堆,使其满足大根堆的条件,再把堆顶元素和数组倒数第二个元素交换,以此类推,最终整个数组有序(从小到大)。

5、冒泡排序:
将序列中所有元素两两比较,将最大的放在最后面。
将剩余序列中所有元素两两比较,将最大的放在最后面。
重复第二步,直到只剩下一个数。

6、快速排序
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列.

7、归并排序。
该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。
在这里插入图片描述
8、基数排序:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。
1、将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。
2、从最低位开始,依次进行一次排序。
3、这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值