очень очень грубая сортировка - PullRequest
2 голосов
/ 01 декабря 2010

Предположим, у нас есть массив (int [] m).

Мне нужно отсортировать ... Результат должен быть:

все элементы в первой половине должны быть меньше или равны всем элементам во второй половине.сделать это? ...

Ответы [ 3 ]

6 голосов
/ 01 декабря 2010

Как уже упоминал Карл в своем комментарии, задача равна шагу разделения в алгоритме быстрой сортировки за исключением , что вы должны найтисначала выберите срединное значение и используйте его в качестве основного элемента.

Вычисление медианы можно вычислить с помощью операций O (n), шаг разделения тоже линейный (O (n)), поэтому общая производительность в худшем случае все же лучше, чемполная сортировка (O (n log (n)).

Алгоритм будет выглядеть следующим образом (необходимо реализовать стандартные методы):

public int[] roughSort(int[] input) {
  int pivot = findMedian(input);
  int[] result = partition(input, pivot);
  return result;
}
4 голосов
/ 01 декабря 2010
   Arrays.sort(array);
    for (int i : array) {
      System.out.println(i);
    }

Сортировка в порядке возрастания подходит для вашего случая.

0 голосов
/ 01 декабря 2010
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);

Это то, что вы хотели?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...