冒泡排序
来源:互联网 发布:淘宝越刷排名越靠后 编辑:程序博客网 时间:2024/06/07 04:05
冒泡排序
- 对样本数组进行比较循环
- 从头开始依次比较大小,交换位置,然后再跟相邻的下一个数进行比较,再交换位置
一轮比较完毕以后,进行下一次的比较,还是从样本头开始比较,比较次数比上一次的次数减少一次,因为有一个数在上一轮比较中已经归位。
以此类推,循环到最后一个数停止。
例如:
$arr = [15, 32, 78,13, 58, 52, 63, 22, 14, 55];
样本数组的样本总数是10,则要进行$i=(10-1)
轮。每轮再进行
10-$i
次的相邻数($i
的起始值是1)的比较,直至该轮的结束,数字归位
。如果是从大到小,那么比较左边的数和右边的数谁更小,更小的向右交换位置,以此类推。直到最小数到达最后面的位置,然后进行下一轮。
代码:
<?php/** * 冒泡算法排序 *///参与排序的随机数组,手动随机!!$arr = [15, 32, 78,13, 58, 52, 63, 22, 14, 55];foreach ($arr as $arr_l){ echo $arr_l."--";}echo '<hr/>';//冒泡排序: 外循环的冒泡次数是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)
,算法较为浪费时间
0 0
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- @RequestMapping 用法详解之地址映射(转)
- 桶排序算法实现-PHP
- Add Two Numbers
- i.MX6DL uboot 中 i2c4 总线配置
- 【转载】程序员谈学习:我为什么要学习Linux?
- 冒泡排序
- 企业微信对接操作
- quick cocos2dx grid3d 特效整理
- [windows]Android Studio代码重构常用快捷键
- 理解html语义化
- Android之Activity(二)生命周期
- 前端和后端是如何交互的
- Win10 64bit安装VC6+VC6助手
- 布局