冒泡排序优化
优化前后,时间复杂度都是O(n^2);
优化策略: 加个变量标识,如果里面没有发生交换,就意味着数组目前就是有序的,可以退出循环了;
$arr = [5,1,2,3,4]; for ($i = 0; $i < count($arr); $i++) { $flag = 1; // 标识
for ($j = 0; $j < count($arr) - $i - 1; $j++) { if ($arr[$j] > $arr[$j + 1]) { $flag = 0; $temp = $arr[$j]; $arr[$j] = $arr[$j + 1]; $arr[$j + 1] = $temp; } }
// 已经是有序的,break退出循环 if($flag) break; }
你的坚持 ------ 终将美好 ~