气泡排序和订单类型


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;

}

我知道问题的题目没那么巧妙。我感谢您的时间并帮助

在这种情况下,您可以将两个操作数与-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。

您可以在要检查的元素前面添加一个负号,这样就会发生相反的情况。

将元素(无论您在哪里检查不等式)乘以$c,其中$c是+1或-1,根据High to Low或Low to High。