所有排序算法汇总,冒泡,选择,插入,快速,优化快速,归并,希尔,堆排序

Posted chenyoude

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了所有排序算法汇总,冒泡,选择,插入,快速,优化快速,归并,希尔,堆排序相关的知识,希望对你有一定的参考价值。

冒泡排序,不多说,两次for循环比较相邻两个元素的大小,然后进行交换。

选择排序,我们第一次for循环遍历所有元素,并把当前元素假设为最小的元素,然后再一个for循环去寻找真正最小的元素进行交换,这样每次我们都能找到未排序元素中的最小的元素。

插入排序,我们第一个for循环遍历所有元素,保存当前元素的位置,遍历该元素前面所有的元素,如果前边的元素的值比自己大,那么就进行交换,每次都确保左边都是比自己小的元素,右边都是比自己大的元素。

快速排序,选择第一个元素作为基准值,然后把比他小的元素放他左边,比他大的元素放他右边,然后再对他左边的元素进行同样的操作,对他右边的元素进行同样的操作,即递归。

优化快速排序,我们在选择主元之前提前把比他小的元素放在他左边,比他大的元素放在他右边,而不是在之后递归的时候做,也就是找一次基准值就行了,那怎么实现呢?我们在一个乱序数组中,设定一个左指针和一个右指针,然后左指针往右移,右指针往左移,如果左指针指向的元素大于基准值停下来,右指针遇到比基准值小的元素就和左指针交换,直到left大于right交换就结束了,最后交换右指针对应元素与基准值的位置,返回右指针的位置,即可得到基准值的位置,然后进行递归排序。

归并排序,我们把一个打乱的数组分成两份后再分成两份,一直分到最后,然后开始进行合并,合并的时候只需要对两个合并的数组进行判断,对两个数组的元素进行比较,一直拿出最小的一个元素,拿出来后指针加一,然后一直合并再合并。

希尔排序,设定一个增量值,该增量值值确定了每次要比较元素之间的索引差,最后一个索引差必须为1。一般增量值设定成数组长度的一半,一半的一半。通过比较数组第0个元素和数组第0+增量值个元素大小后排序,然后第1个…之后比较另一个增量值,知道最后全部排序成功。

堆排序,堆排序在堆那一节详细说明了,其实就是用堆的特性来完成排序,每次添加都维持堆的特性添加元素,然后在提取的时候,每次提取提取的都是最大值。

以上是关于所有排序算法汇总,冒泡,选择,插入,快速,优化快速,归并,希尔,堆排序的主要内容,如果未能解决你的问题,请参考以下文章

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

九种经典排序算法汇总

九种经典排序算法汇总

Python八大算法的实现,插入排序希尔排序冒泡排序快速排序直接选择排序堆排序归并排序基数排序。

排序算法(冒泡-选择-插入-希尔-快速-归并)

图形化排序算法比较:快速排序插入排序选择排序冒泡排序