假设我们有一个数组(int [] m)。
我需要对它进行排序......结果必须是:
上半场的所有项目必须少于或等于下半场的任何项目。
怎么做?...
答案 0 :(得分:6)
正如Karl在评论中已经提到的那样,任务等同于quicksort algorithm 中的分离步骤,但异常,你必须找到样本首先是中位数并将其用作枢轴元素。
计算median可以使用O(n)运算来计算,参与步骤也是线性的(O(n)),因此整体最差情况下的性能仍然优于完全排序(O( n log(n))。
算法将如下所示(需要实施标准方法):
public int[] roughSort(int[] input) {
int pivot = findMedian(input);
int[] result = partition(input, pivot);
return result;
}
答案 1 :(得分:4)
Arrays.sort(array);
for (int i : array) {
System.out.println(i);
}
按升序对其进行排序应该适用于您的情况。
答案 2 :(得分:0)
List<Integer> list = new ArrayList<Integer>();
list.add(2);
list.add(5);
list.add(1);
list.add(15);
list.add(55);
list.add(23);
Collections.sort(list);
int length = list.size();
List<Integer> list1 = list.subList(0, length/2);
List<Integer> list2 = list.subList(length/2, length);
Collections.shuffle(list1);
Collections.shuffle(list2);
List<Integer> newList = new ArrayList<Integer>();
newList.addAll(list1);
newList.addAll(list2);
System.out.println(newList);
这是你想要的吗?