课程咨询 :13623629309

太原PHP培训 > 达内新闻 > 四种基本排序算法以及PHP实现
  • 四种基本排序算法以及PHP实现

    发布:锅子博客      来源:锅子博客      时间:2016-10-13

  • 四种基本排序算法以及PHP实现

    Php中有很多的算法,尤其是排序的算法,今天太原php培训班为大家带来4中常用的算法排序。

    因为之前没有编程基础,最近才知道排序算法这个概念,原来平时在操作数组的时候是用到算法这玩意的。

    从网上找了下资料,都一个来源; $ arr = array ( 1 , 43 , 54 , 62 , 21 , 66 , 32 , 78 , 36 , 76 , 39 ) ; 做例子排序。

    1. 冒泡排序

    原理:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

    理解:

    假设有10个数:

    没排完 排完

    ********* * (没排完的数中冒出一个最大的)

    ******** ** (没排完的数中冒出一个最大的放到排完的中,成为第二大的)

    ... ...

    ... ...

    * ********* (直到没排完的只剩一个最小的,排序完成;过程中没排完的实际上是混序的,两两冒泡不会有排序效果,只是筛选出哪个大哪个小)

    2. 选择排序

    原理:在要排序的一组数中,选出最小的一个数与第一个位置的数交换。然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。

    理解:

    假设有10个数:

    排完 没排完

    * ********* (所有中抽出一个最小的,放到第一个)

    ** ******** (没排完的抽出一个最小的,放到第二个)

    ... ...

    ... ...

    ********* * (直到抽完所有的数,排序完成)

    3. 插入排序

    原理:在要排序的一组数中,假设前面的数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。

    理解:

    假设有10个数:

    排完 没排完

    * ********* (拿出没排完的第一个数,到排完的中进行排序)

    ** ******** (拿出没排完的第一个数,到排完的中进行排序)

    ... ...

    ... ...

    ********* * (拿出没排完的最后一个数,到排完的中进行排序;期间是两两比较方式)

    4. 快速排序

    原理:选择一个基准元素,通常选择第一个元素或者最后一个元素。通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素。此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。

    理解:

    假设有10个数:

    小于拿出 拿出 大于拿出

    *** * ******

    小于拿出 再拿出 大于拿出 之前拿出 小于拿出 再拿出 大于拿出

    * * * * ** * ***

    ... ...

    ... ...

    **********

    如此循环直到最后全部拆开,再合起来,排序完成。

    5. 总结

    冒泡排序: 逐渐筛选出最大值

    选择排序:逐渐筛选出最小值

    插入排序:按顺序一个一个取出进行排序

    快速排序:逐渐递归拆分进行排序,直至全部拆分排序完成

    好了,今天就给大家讲这么多吧,喜欢我的内容可以关注或者分享(微信公众平台:tytedu)选择太原达内培训,不再孤军奋战,轻轻松松做IT高薪白领。太原达内培训带领有明确目标的学子迈向成功之路!

上一篇:PHP7.0.0格式化字符串漏洞与EIP劫持分析

下一篇:跨平台PHP调试器设计及使用方法——立项

最新开班日期  |  更多

php高级开发名企定制班(剩2个名额)

php高级开发名企定制班(剩2个名额)

开班日期:12-29

php高级开发周末班(剩5个名额)

php高级开发周末班(剩5个名额)

开班日期:12-29

php高级开发免费试听(剩5个名额)

php高级开发免费试听(剩5个名额)

开班日期:12-29

更多高级开发工程师精品班

更多高级开发工程师精品班

开班日期:12-29

  • 地址:山西省太原市小店区学府街长治路高新国际A座24层
  • 课程培训电话:13623629309     全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56