Bubble Сортировка и тип заказа

Я работал над пузырьковой сортировкой (в PHP) и хотел добавить дополнительный параметр в свою функцию, где он решает тип заказа (от низкого до высокого или от высокого до низкого), поэтому вместо копирования вставьте весь код и просто измените его. знак, есть что-то вроде специального синтаксиса или что-то, что я могу добавить?

Это может быть хорошо для других функций, где просто 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;

}

Я знаю, что название вопроса не так умно. Я ценю ваше время и помощь

0

Решение

В этом случае вы можете умножить оба операнда на -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 в качестве второго параметра.

1

Другие решения

Вы можете добавить отрицательный знак перед проверяемыми элементами, чтобы произошло обратное.

Умножение элементов (где бы вы ни проверяли неравенство) на $c где $c +1 или -1 в соответствии с High to Low или Low to High.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector