2014-09-30 53 views
0

我正在做一個氣泡排序(在PHP中),我想給我的函數添加一個額外的參數,它決定訂單類型(從低到高或從高到低),所以不是複製粘貼所有的代碼,只是改變一個標誌,有沒有像特殊的sintaxys或任何我可以添加到?氣泡排序和訂單類型

這可能是其他功能的環境也不錯,其中僅僅是一個IF相比有什麼變化

function bubbleSort($array,$order){ 
$cnt = count($array); 
if($cnt > 0) { 
    for ($i = 0; $i < $cnt; $i++) { 
     for ($j = 0; $j < $cnt - 1 - ($i); $j++) { 
      $temp = $array[$j]; 
      if ($array[$j] ***>*** $array[$j + 1]) { // Here is where that sign must change 
       $array[$j] = $array[$j + 1]; 
       $array[$j + 1] = $temp; 
      } 
     } 
    } 
} 
return $array; 

}

我知道問題的標題是不是聰明。我讚賞你的時間和幫助

回答

1

在這種情況下,你可以用-1乘兩個操作數:

const LOW_TO_HIGH = 1; 
const HIGH_TO_LOW = -1; 

function bubbleSort($array,$order){ 
    $cnt = count($array); 
    if($cnt > 0) { 
     for ($i = 0; $i < $cnt; $i++) { 
      for ($j = 0; $j < $cnt - 1 - ($i); $j++) { 
       $temp = $array[$j]; 
       if ($array[$j] * $order > $array[$j + 1] * $order) { 
        $array[$j] = $array[$j + 1]; 
        $array[$j + 1] = $temp; 
       } 
      } 
     } 
    } 
    return $array; 
} 

然後你通過這兩個常量冒泡作爲第二個參數之一。

1

你可以在要檢查的元素前添加一個負號,以便發生相反的情況。

將元素(無論您在何處檢查不等式)乘以$c,其中$c爲+1或-1,如從高到低或從低到高。

+0

這是一個好主意,我會嘗試它 – Mollo 2014-09-30 15:37:18