假设我们有一个数组( int[] m )。
我需要整理它..。结果必须为:
前半部分中的所有项目必须小于或等于后半部分中的任何项目。
怎么做呢?...
发布于 2010-12-01 14:55:02
正如卡尔已经在他的评论中提到的,这项任务等同于quicksort algorithm 中的拆分步骤,但例外,您必须首先找到样本中值并将其用作枢轴元素。
计算一个对数可以用O(n)次操作来计算,划分步骤也是线性的(O(n)),因此总体最坏情况下的性能仍然好于完全排序(O(n median (N)。
算法将如下所示(需要实现标准方法):
public int[] roughSort(int[] input) {
int pivot = findMedian(input);
int[] result = partition(input, pivot);
return result;
}发布于 2010-12-01 14:39:58
Arrays.sort(array);
for (int i : array) {
System.out.println(i);
}对你的情况来说,按升序排序是可以的。
发布于 2010-12-01 15:12:46
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);这是你想要的吗?
https://stackoverflow.com/questions/4321837
复制相似问题