算法 - 冒泡算法 以及对应的优化方法
上帝公平地给了每个人每天三个8小时。第一个8小时大家都在工作;第二个8小时大家都在睡觉;人与人的区别大多是在第三个8小时创造出来的!
冒泡算法
function myFun($data, $type = 'desc') {
if( !is_array($data) ) {
return 'formate is error';
}
$count = count($data);
//
if( $count == 0 ){
return 'data is empty';
}
//
if( $count == 1 ) {
return $data[0];
}
// 标识
$flag = true;
for ($i=1; $i < $count; $i++) {
for ($j=0; $j < $count - $i; $j++) {
if( $type == 'desc' && $data[$j] < $data[$j+1] ) {
$item = $data[$j+1];
$data[$j+1] = $data[$j];
$data[$j] = $item;
$flag = false;
} else if( $type == 'asc' && $data[$j] > $data[$j+1] ) {
$item = $data[$j+1];
$data[$j+1] = $data[$j];
$data[$j] = $item;
$flag = false;
}
}
// 没有变化
if( $flag ) {
break;
}
}
return implode(',', $data);
}
$myData = [1, 3, 56, 78, 90, 23, 89];
echo myFun($myData, 'asc');
直接运行就可以,优化的部分在于 flag 这个变量 然后进行的判断,身为程序员的你,可以自行体会
时间复杂度:O(n^2)
空间复杂度:O(1)

浙公网安备 33010602011771号