【发布时间】:2011-08-03 16:43:06
【问题描述】:
我需要 php 中的一个函数来根据任意顺序对单词列表进行排序。
列表中未按我的预定义顺序排列的任何单词都应按字母顺序排列在列表末尾。
以下是我的第一次尝试,既不优雅也不高效。您能提出一个更好的方法来实现这一目标吗?
谢谢
public static function sortWords(&$inputArray){
$order=array("Banana","Orange", "Apple", "Kiwi");
sort($inputArray);
for($i=0;$i<count($inputArray));$i++){
$ac = $inputArray[$i];
$position = array_search($ac,$order);
if($position !== false && $i != $position){
$temp=$inputArray[$position];
$inputArray[$position]=$inputArray[$i];
$inputArray[$i]=$temp;
}
}
}
【问题讨论】:
-
您可以先对两个列表进行排序(NlogN + MlogM 时间),然后遍历列表进行匹配(N+M 时间)。由于无论如何您都必须进行排序,因此这是最佳选择。
-
我知道这对您的问题无关紧要,但您在
for语句中有一个错误,$i<count($inputArray);用两个右括号代替了一个