冒泡排序
冒泡排序
几种排序中性能最差的,时间复杂度是 O (n^2)
正序排序
代码
/**
* @api http://192.168.33.10:8895/invoking/test/test24
* @throws \yii\db\Exception
* @throws \ReflectionException
*/
public function actionTest24()
{
$array = [9,1,5,3,2,4];
$count = count($array);
for ($i = 0;$i<$count;$i++){
for ($j = $i+1; $j < $count;$j++){
if ($array[$i] > $array[$j]){
$tmp = $array[$i];
$array[$i] = $array[$j];
$array[$j] = $tmp;
}
print_r(json_encode($array))."\n";
}
}
}
####返回结果
元数据
[9,1,5,3,2,4]
运算变化
-----------
[1,9,5,3,2,4]
[1,9,5,3,2,4]
[1,9,5,3,2,4]
[1,9,5,3,2,4]
[1,9,5,3,2,4]
-----------
[1,5,9,3,2,4]
[1,3,9,5,2,4]
[1,2,9,5,3,4]
[1,2,9,5,3,4]
-----------
[1,2,5,9,3,4]
[1,2,3,9,5,4]
[1,2,3,9,5,4]
-----------
[1,2,3,5,9,4]
[1,2,3,4,9,5]
-----------
[1,2,3,4,5,9]
-----------
分析
逻辑就是,把最小的值放在最上面;
1.先拿1个和第2个比较,取出最小的放在第 1个位置上,再拿比较后的第一个(最小的),跟第三个比较,同样的逻辑 这样就能找出最小的1个放在1的位置上
2.第二轮,取出第二小的放在2的位置上,以此类推
3.第三轮,去除第三小的房子啊 3 的位置上
### 倒叙排序
```text
public function actionTest24()
{
$array = [9,1,5,3,2,4];
$count = count($array);
for ($i = 0;$i<$count;$i++){
for ($j = $i+1; $j < $count;$j++){
if ($array[$i] < $array[$j]){
$tmp = $array[$i];
$array[$i] = $array[$j];
$array[$j] = $tmp;
}
print_r(json_encode($array,true));
}
echo "\n";
print_r("-----------")."\n";
echo "\n";
}
exit();
}
[9,1,5,3,2,4][9,1,5,3,2,4][9,1,5,3,2,4][9,1,5,3,2,4][9,1,5,3,2,4]
-----------
[9,5,1,3,2,4][9,5,1,3,2,4][9,5,1,3,2,4][9,5,1,3,2,4]
-----------
[9,5,3,1,2,4][9,5,3,1,2,4][9,5,4,1,2,3]
-----------
[9,5,4,2,1,3][9,5,4,3,1,2]
-----------
[9,5,4,3,2,1]
本作品采用《CC 协议》,转载必须注明作者和本文链接