自写的PHP数组排序

发布时间:2008年06月25日      浏览次数:1098 次
看到PHPX上一张帖子,作者说是“去一家公司的面试题”。
题目要求:用以下给出的数组对数组进行排序,升序倒序都可以。但不能用系统附带的函数来实现,要自己写一函数来实现,比如PHP不能用asort()或ksort()等...有关数组排序的都不能用...
这段日子我号称是在看书学习,有段时候没写程序了。题目也不难,正好写来练练手。
$array = array('one'=>200, 'three'=>150, 'four'=>100, 'two'=>230);
$ka=array_keys($array);
$count=count($ka);
for($i=0;$i<$count-1;$i++){
for($j=0;$j<$count-$i-1;$j++){
if($array[$ka[$j]]>$array[$ka[$j+1]]){
$temp=$ka[$j];
$ka[$j]=$ka[$j+1];
$ka[$j+1]=$temp;
}
}
}
for($i=0;$i<$count;$i++){
$asort["$ka[$i]"]=$array[$ka[$i]];
}
print_r($asort);
?>
因为在保持关联数组的对应关系,还是有点小技巧的。看来程序真是得经常写,我这算法都忘得差不多了。用个最简单的冒泡排序法,还改了几次还改对,惭愧惭愧。
看看了后面的回帖,各家写得还都不大一样。最特别的是一版主写的:
$array = array('one'=>200, 'three'=>150, 'four'=>100, 'two'=>230);
$values = array_values($array);
do {
$cur = min($values);
#$cur = max($values);
$key = array_search($cur,$array);
if ($key === false) {
break;
}
$result[$key] = $cur;
unset($array[$key]);
unset($values[array_search($cur,$values)]);
} while (count($values)>0);
var_dump($result);
?>
一看就是PHP老手,把语言中有关数组的强大功能发挥得淋漓尽致。值得我学习。
免责声明:本站相关技术文章信息部分来自网络,目的主要是传播更多信息,如果您认为本站的某些信息侵犯了您的版权,请与我们联系,我们会即时妥善的处理,谢谢合作!