繁体   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