【发布时间】:2014-08-12 14:05:35
【问题描述】:
我在这里有一个问题要处理(我的代码中有一个逻辑错误 99%)。我似乎无法找到解决问题的方法,但我敢打赌你们中的一个人很快就会发现问题!
我必须创建一个函数,以 asc 或 desc 顺序对传递给它的数组进行排序,但不能使用任何数组排序函数!
到目前为止,我一直在与循环作斗争,我终于想向其他开发人员(你)寻求帮助。
目前只处理升序代码,我假设一旦我这样做,降序将没有问题。它有点将值排序到某个点,然后停止(如果下一个最小值位于传递数组的末尾,它就会停止)。我能做些什么来防止这种情况并使其对整个数组及其元素进行排序?
这是目前为止的代码。
<?php
function order_array($array,$mode = 'ascending') {
$length = count($array);
if($mode == 'descending') {
return $array;
} else {
$sorted_array = array();
$used_indexes = array();
for($i = 0; $i < $length; $i++) {
$smallest = true;
echo $array[$i] . '<br/>';
for($y = 0; $y < $length; $y++) {
//echo $array[$i] . ' > ' . $array[$y] . '<br/>';
// if at ANY time during checking element vs other ones in his array, he is BIGGER than that element
// set smallest to false
if(!in_array($y,$used_indexes)) {
if($array[$i] > $array[$y]) {
$smallest = false;
break;
}
}
}
if($smallest) {
$sorted_array[] = $array[$i];
$used_indexes[] = $i;
}
}
return $sorted_array;
}
}
$array_to_sort = array(1, 3, 100, 99, 33, 20);
$sorted_array = order_array($array_to_sort);
print_r($sorted_array);
?>
【问题讨论】:
-
你读过我的帖子吗?反问,因为我知道你没有。明确说明没有数组排序功能
-
好的,抱歉,但您可以保持升序排序,只返回数组从末尾到第一个元素(使用计数)
-
你能举个例子说明我需要在哪里做这个吗?或者指出我的代码中有逻辑错误的部分?
-
我发表了一个答案,希望你能从中理解