博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
冒泡排序
阅读量:7211 次
发布时间:2019-06-29

本文共 904 字,大约阅读时间需要 3 分钟。

冒泡排序

  • 对样本数组进行比较循环

  • 从头开始依次比较大小,交换位置,然后再跟相邻的下一个数进行比较,再交换位置

  • 一轮比较完毕以后,进行下一次的比较,还是从样本头开始比较,比较次数比上一次的次数减少一次,因为有一个数在上一轮比较中已经归位。

  • 以此类推,循环到最后一个数停止。


例如:

  • $arr = [15, 32, 78,13, 58, 52, 63, 22, 14, 55];

    样本数组的样本总数是10,则要进行$i=(10-1)轮。

  • 每轮再进行10-$i次的相邻数($i的起始值是1)的比较,直至该轮的结束,数字归位

  • 如果是从大到小,那么比较左边的数和右边的数谁更小,更小的向右交换位置,以此类推。直到最小数到达最后面的位置,然后进行下一轮。


代码:

';//冒泡排序: 外循环的冒泡次数是N-1次。因为若干个数冒泡,样本中的最后一个数是不需要进行排序的for ($i = 1; $i < count($arr) -1; $i++) { //样本数是10,$i<9,则$i的依次取值是1,2,3,4,5,6,7,8 /** * $j的取值范围最多到count($arr) - 2 ,因为$j+1的取值范围最大是count($arr) ; * * 由于$j的取值是取决于 count($arr) - $i */ for ($j = 0; $j < count($arr) - $i; $j++) {//某一次的冒泡排序次数是 样本数减去$i的值, $j的依次取值是0-8,0-7,...,0-2 if ($arr[$j] < $arr[$j+1]) { //这边的比较符号决定排序顺序。 $t = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $t; } }}foreach ($arr as $arr_l){ echo $arr_l."--";}

缺点:

  • 时间复杂度为O(N^2),算法较为浪费时间

转载地址:http://rfgum.baihongyu.com/

你可能感兴趣的文章
vector
查看>>
vue之实现日历----显示农历,滚动日历监听年月改变
查看>>
display:block;inline;inline-block大总结
查看>>
开博的第一天!
查看>>
hadoop-hdfs-fsimage与edits合并
查看>>
1.06 CCLayerColor 及 CCLayerGradient
查看>>
ENCOURAGE研究: 病情中度活动RA获得深度缓解后有望实现停药
查看>>
css3中动画animation的应用
查看>>
贝塞尔曲扫盲(转)
查看>>
kill
查看>>
How to export a template in Visual Studio?
查看>>
socket 网络编程
查看>>
网络相关
查看>>
关于 最短路条数 和 边不可重复最短路条数问题 /hdu3599(边不可重复最短路)...
查看>>
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.212.el6_10.3.x86_64
查看>>
移动端常见的一些兼容性问题
查看>>
基于Dcoker的ZooKeeper集群的搭建
查看>>
数据节点-df 无法输出结果
查看>>
python 一些魔法
查看>>
机器学习中的相似性度量 (转)
查看>>