PHP《常见排序算法–PHP实现》

原稿地址

本文地址: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循环搞定。

 

PHP 1

冒泡排序

2.2 插入排序


   
1)【定义】:从一堆待排序的数列中选出来一个最小值(可以认为首先个数就是已排序的数列),然后从剩余的带排序的数列中选出来最小值有序松手已排序的数列中,依次操作,直到最终的数列都是一个从小到大的有序数列结束。

    2)【代码实现】:

 

PHP 2

插入排序

2.3 拔取排序


   
1)【定义】: 从一堆待排序的数列中选出来一个细小值,放到新的数组的第一个职务,继续从剩余的数列中接纳最小值放入到数组中,重复下边的步调,将数字都取出来排成新的不变数列。 

    2)【代码实现】:

 

PHP 3

慎选排序主函数

 

 

PHP 4

选料排序子函数

2.4 希尔(Hill)排序


   
1)【定义】: 插入排序的一种改进,先相比自然距离的因素变为有序数列,再相比较收缩增量距离的元素(可为元素的多寡的一半),一贯到相比较的是相邻元素的时候,就改为了插入排序。所以Hill排序是插入排序的改进。

    2)【代码实现】:

 

PHP 5

希尔(Hill)排序

2.5 堆排序


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

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

2)【代码实现】

 

 

PHP 6

堆排序主函数heapSort()

 

 

PHP 7

堆排序子函数

2.6 归并排序


    1)【定义】:就是将待排序的数列看成是单个的有序的数列,然后举办统一,直到合并成最终的落成整有序的数列。

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

    2)代码实现:

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

 

 

PHP 8

归并排序主函数mergeSort()

 

 

PHP 9

归并排序子函数mergePass()

 

 

PHP 10

归并排序子函数merge() 

 

2.7 飞快排序


1)定义:该算法的中央思维是:

    1.先从数列中取出一个数作为基准数。

    2.分区过程,将比那几个数大的数全放手它的出手,小于或等于它的数全放手它的左侧。

    3.再对左右间距重复第二步,直到各区间只有一个数

2)代码实现:

 

 

PHP 11

高效排序

 

3.排序总结

各个排序的安宁,时间复杂度、空间复杂度、稳定性总计如下图:

 

 

PHP 12

排序算法相比

 

 

 

相关文章