簡體   English   中英

氣泡排序和訂單類型

[英]Bubble Sort and order type

我當時在進行冒泡排序(在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;

}

我知道問題的標題不是那么聰明。 我感謝您的時間和幫助

您可以在要檢查的元素前面添加一個負號,以便進行相反的操作。

將元素(無論您在哪里檢查不平等)乘以$c ,其中$c是+1或-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;
}

然后,將這兩個常量之一作為第二個參數傳遞給bubbleSort。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM