我完成了以下任务,不幸的是我不知道如何解决它。
您已经实施了以下功能:
function array_swap(&$ar,$j) { ... } // changes element at position $j with element at position 0
/*
* Example:
* $ar=array(3,1,5);
* array_swap($ar, 2); // change element at position 2 with element at position 0
* result is array(5,1,3);
*/
1您必须使用array_swap函数
2您可以比较数组中的元素
3你可以使用任何循环(for,foreach,while等)
4任务是对数组进行升序排序
有人可以给我帮助,想法如何实现这个?也许算法足够了,我希望我可以编码。 :) 这是一个算法问题,我之前检查过现有的算法,但没有发现任何类似的算法。
答案 0 :(得分:0)
解决这个问题的一个方法是使用array_swap函数两次:首先是将到目前为止找到的最高值放入第一个索引,然后将其移动到数组的末尾。现在您在正确的位置拥有最高价值,您可以向下移动1个索引。您只需找到低于先前最高值的下一个最高值,然后再次进行双重交换。重复,直到到达数组的开头。
以上是O(n ^ 2)解决方案,因此可能有更有效的解决方案。