2014-09-30 52 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