非常非常粗糙的排序

时间:2010-12-01 06:35:46

标签: java arrays algorithm sorting

假设我们有一个数组(int [] m)。

我需要对它进行排序......结果必须是:

上半场的所有项目必须少于或等于下半场的任何项目。

怎么做?...

3 个答案:

答案 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);

这是你想要的吗?