-1

你能帮我创建一个优化的 php 自定义函数来对二进制数组进行排序吗?现在,我正在使用带有两个 for 循环的冒泡排序算法。我的代码如下:

for ( $i = 0; $i < $array_size; $i++ )  
{  
   for ($j = 0; $j < $array_size; $j++ )  
   {  
      if ($numbers[$i] < $numbers[$j])  
      {  
         $temp = $numbers[$i];  
         $numbers[$i] = $numbers[$j];  
         $numbers[$j] = $temp;  
      }  
   }  
}
4

1 回答 1

3

O(N^2)您可以使用以下方法进行冒泡排序O(N)

  1. 求数组中所有元素的总和。它会给你1数组中的 's 的数量。您可以为此使用 array_sum() 函数。调用结果s。也让n是数组中的元素数。

  2. 排序后的数组将具有s 的n-s数量,0后跟's的s数量。1

请注意,您不能做得更好,O(N)因为您必须触摸每个数组元素一次。

于 2012-09-26T12:49:26.497 回答