思路:冒泡排序法【改进】
- 1.冒泡排序法,如果后续元素都有序的话,还会进行遍历,针对这个地方,可以做一个优化。
<?php
namespace fql\test;
use fql\aglorthim\sort\BubbleSort;
require_once __DIR__ . '/../../vendor/autoload.php';
function sort(){
//初步假设元素无序
$isSort = true;
$arr = [1,5,6,2,4,2,8,9,10];
$len = count($arr);
//循环n趟
for ($i = $len ;$i > 0 ; $i --){
//如果有序,退出循环
if($isSort == false){
break;
}
//假设本趟有序
$isSort = false;
for( $j = 0; $j< $i - 1 ; $j++){
if($arr[$j] > $arr[$j + 1]){
//说明无序
$isSort = true;
//交换元素
swap($arr[$j], $arr[$j + 1]);
}
}
}
return $arr;
}
/**
* @param $pre
* @param $next
* 交换功能
*/
function swap(&$pre,&$next){
$tmp = $pre;
$pre = $next;
$next = $tmp;
}
print_r(sort());
网友评论