

php冒泡排序
2020-03-20 17:42:41
- 来源:
- 作者:代元培
- 类别:原创
- 浏览:1114 次
冒泡排序是简单排序算法中知名度最高的。也是刚入行就能频繁听到的,也是当时面试比较容易考的,但其实工作中至今没用过。
那么冒泡排序的思路是怎么样的呢?首先就是先比较相邻的两个元素,如果满足条件,就交换,否则不动。然后再比较接下来的两个相邻的元素,然后满足条件就交换,否则不交换。以此类推。
举例说明:一个数组有5个元素从小到大排序,首先第一个和第二个比,第一个比第二个大,就交换,否则不操作,然后第二个和第三个比较,第二个大于第三个则交换,否则不用交换。直到对比到第四个和第五个。经过一轮的循环对比,最大的数字就下沉到最下边了。小的数字逐渐向上浮出。
如下代码是标准的冒泡排序,代码实现也完全符合冒泡排序的思想。
// 冒泡排序
function maopao($arr){
$len = count($arr);
for ($i = 0; $i < $len-1; $i++) { // 循环对比的次数
for ($j = 0; $j < $len-1-$i; $j++) { // 当前轮相邻元素循环对比
if ($arr[$j] > $arr[$j+1]) { // 如果前边的大于后边的
$tmp = $arr[$j]; // 交换数据
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $tmp;
}
}
}
return $arr;
}
$arr = [5,4,3,7,9,6,2,1,8];
print_r(maopao($arr));
// 另外一种阶梯式排序,每次和后面的所有逐一对比
// 阶梯式排序 从小到大排序
function jieTi($arr)
{
$len = count($arr);
for ($i = 0; $i < $len-1; $i++) { // 循环比对的次数
for ($j = $i+1; $j < $len; $j++) { // 每次和后面的所有逐一比较
if ($arr[$i] > $arr[$j]) { // 前边大于后边则交换
$tmp = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $tmp;
}
}
}
return $arr;
}
$arr = [6,2,4,7,9,3,1,5,8];
print_r(jieTi($arr));
- 1
- 2
- 3
- 关键词标签: php
- 责任编辑:代元培

