冒泡排序优化

优化前后,时间复杂度都是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; }

 

posted @ 2020-10-08 17:50  一粒小米-博客  阅读(64)  评论(0编辑  收藏  举报