程序猿的文化娱乐情怀

初稿地址

正文地址:http://www.cnblogs.com/aiweixiao/p/8202360.html

 Original 2018-01-02 关心 微信群众号 技术员的文化娱乐情怀

1.概述

   
常见的排序算法,尽管很基础,但是很见功力,假若能思路清晰,相当的慢写出来各样算法的代码完毕,还是必要花一点武术的,前几日,就跟大家盘点下常用的一对算法。

冒泡排序

插入排序

选料排序

Hill排序

堆排序

归并排序

火速排序

 

2.相继排序代码达成(PHP版本)

代码详见GitHub: http://t.cn/RHjBCU7

    2.1 冒泡排序


   
1)【定义】:就是首先个岗位上的数与他相邻第贰个职位上的数相比,要是比他相邻的数小,则两个调换个地方置,不然不交流。接着第三个职位上的数与第五个地点上的数十分大小,也是小则沟通,一贯到和终极叁个地点的数相比较交流完成。然后,是下一个生生不息,正是第二个职位上的数重复上边的可比调换操作,直到把全部数列形成是三个从小到大的不改变连串。

 

    2)【代码实现】:两层for循环解决。

 

图片 1

冒泡排序

2.2 插入排序


   
1)【定义】:从一批待排序的数列中选出来一个最小值(能够认为第叁个数便是已排序的数列),然后从剩余的带排序的数列中选出来最小值有序放手已排序的数列中,依次操作,直到最终的数列都以七个从小到大的雷打不动数列截止。

    2)【代码完结】:

 

图片 2

插入排序

2.3 采纳排序


   
1)【定义】: 从一批待排序的数列中选出来三个细微值,放到新的数组的率先个职分,继续从剩余的数列中精选最小值归入到数组中,重复下面的步子,将数字都抽取来排成新的不改变数列。 

    2)【代码达成】:

 

图片 3

分选排序主函数

 

 

图片 4

挑选排序子函数

2.4 希尔排序


   
1)【定义】: 插入排序的一种创新,先相比一定距离的因素变为有序数列,再比较裁减增量距离的因素(可为成分的数目标四分之二),平昔到相比的是相近成分的时候,就形成了插入排序。所以希尔排序是插入排序的精雕细琢。

    2)【代码达成】:

 

图片 5

Hill排序

2.5 堆排序


1)【定义】:1️⃣构造大顶堆 2️⃣置换堆顶和堆底
3️⃣重复前边的手续升序排列完结

   
详细表达参看: https://www.cnblogs.com/chengxiao/p/6129630.html

2)【代码实现】

 

 

图片 6

堆排序主函数heapSort()

 

 

图片 7

堆排序子函数

2.6 归并排序


    1)【定义】:就是将待排序的数列看成是单个的稳步的数列,然后开展联合,直到合并成最终的做到整有序的数列。

   
详细可参看:https://www.cnblogs.com/jingmoxukong/p/4308823.html

    2)代码实现:

    主函数mergeSort(),五个子函数mergePass() 和 merge()

 

 

图片 8

归并排序主函数mergeSort()

 

 

图片 9

归并排序子函数mergePass()

 

 

图片 10

归并排序子函数merge() 

 

2.7 神速排序


1)定义:该算法的中坚挂念是:

    1.先从数列中抽取三个数作为基准数。

    2.分区历程,将比这几个数大的数全松开它的左臂,小于或等于它的数全松开它的左臂。

    3.再对左右间隔重复第二步,直到各区间唯有贰个数

2)代码实现:

 

 

图片 11

高速排序

 

3.排序计算

各类排序的安定,时间复杂度、空间复杂度、牢固性总结如下图:

 

 

图片 12

排序算法相比较

 

 

 

相关文章