Collections.sort ()
Сортировка Java может быть реализована с помощью Colleyleos.sort ().
Есть два метода для сортировки списка с помощью метода Collections.sort:
Первый - это объект в списке для реализации сопоставимого интерфейса, следующим образом:
/*** Сортировка пользователя в соответствии с заказом*/Общедоступный пользователь Пользователь сопоставимо <user> { name;} public integer getRder () {return order;} public void setOrder (integer order) {this.order = order;} public int compareto (user arg0) {rn this.getOrder (). );}} Тест:
Общественный класс {public static void main (string [] art) {user user1 = new user (); ); (список); Результат вывода выглядит следующим образом
Аб
Второй метод состоит в том, чтобы достичь на основе метода загрузки сбора. Ссы, например ::
/*** Сортировать пользователя в соответствии с заказом*/public Class User {// Необходимо реализовать сопоставимый интерфейс. Return order;} public void setOrder (integer order) {this.order = order;}}} Напишите в основном классе ::
Общественный класс {public static void main (string [] art) {user user1 = new user (); ); Int compare (user arg0, user arg1) {return arg0.getorder (). getName ());}}} Результат вывода выглядит следующим образом
Аб
Бывшая структура кода проста, но она может быть отсортирована только в соответствии с фиксированными атрибутами.
Выберите лучшее.
Общий алгоритм сортировки
Давайте посмотрим на практику кода Java с несколькими классическими алгоритмами сортировки:
Сортировка пузырьков
Public static void bubblesort (int a [], int n) {int i, j; j ++) {if (a [j]> a [j + 1]) {a [j] = a [j] ^ a [j + 1]; [j + 1];Непосредственно вставьте сортировку
Public static void вставка (int a [], int n) {int i, j, tmp; ; ;}}}Выберите напрямую
Public static void selectsort (int a [], int n) {int i, j, local; n; [loc] = a [i] ^ a [loc];Сортировка
/ **. n); 0, j);}} / ** * Создайте много корней * * * * * @param a * @param n * / private static void buildmaxHeap (int a [], int n) {for (int i = ( n -2) / 2; I * @param n * / private void maxheapify (int a [], int i, int n) {int left, справа, локальный; i + 2; ;} if (loc! = i) {a [i] = a [loc] ^ a [i]; a [i];} else {break;}}}Быстрая сортировка
Public static Quicksort (int a [], int bt, int ed) {if (bt <ed) {int pivot = pivotputition (a, bt, ed); 1, ed);}} частный статический void swapvar (int a [], int bt, int ed) {int mid = bt + (ed -bt) / 2; ) bt] = a [bt] ^ a [mid]; Bt, int ed) {// Принимайте промежуточное значение в качестве стойки, чтобы предотвратить массив в упорядоченном внешнем виде O (n^2) Swapvar (a, bt, ed); Ed) {while (bt <ed && a [ed]> = stand) {ed-;} if (bt <ed) {a [bt ++] = a [ed]; bt ++;} if (bt <ed) {a [eds ---] = a [bt];} [bt] = state;Слияние
Public static void mergesort (int a [], int bt, int ed) {if (bt <ed) {int mid = bt + (ed -bt) / 2; Ed); ; = A [j]) {tmp [k] = a [i ++];} else {tmp [k] = a [j ++];];} while (j <= ed) {tmp [k ++ ] = a [j ++];} for (i = 0; i <k; i ++) {a [bt+i] = tmp [i];}}Программа тестирования
Приходите и суммируйте приведенный выше алгоритм:
Импорт java.util.scanner; cin.nextint (); ; / / Вставка (A, N); ** * Merge Sort * * * @param a * @param bt * @param eds * / public static void memort (int a [], int bt, int ed) {if <ed) {int mid = bt + (ред. -Bt) / 2; Param bt * @param mid * @param ed */ private static void mergearray (int a [], int bt, int mid, int ed) {int i, j, k, k, len = ed -bt + 1; Tmp [] = new int [len]; <= a [j]) {tmp [k] = a [i ++];} else {tmp [k] = a [j ++];}} while (i <= mid) {tmp [k ++ ] = A [i ++];} while (j <= ed) {tmp [k ++] = a [j ++];} for (i = 0; i <k; i ++) {a [ bt+i] = tmp [i];} / ** * быстро сортируйте * * * @param a * @param bt * @param ed * / public void Quicksort (int a [], int bt, int ed) { If (bt <ed) {int pivot) = pivotpartition (a, bt, ed); [], int bt, int ed) {int mid = bt + (ed -bt) / 2; ] = a [bt] [mid]; параметры * @return */ private static int pivotpartition (int a [], int bt, int ed) {// Возьмите промежуточное значение в качестве позиции, чтобы предотвратить массив в упорядоченном внешнем виде O (n^2) Swapvar (a, bt, ed); +] = a [ed];} while (bt <ed && a [bt] <= stand) {bt ++;} if (bt <ed) {a [eds ---] = a [bt];} a [bt] = Stand; {int tmp; [J]; [], int n) {for (int i = (n -2) / 2; i> = 0; i-) {maxHeapify (a, i, n);} / ** * Техническое обслуживание максимальная куча начала технического обслуживания из Bid i * * * * @param a * @param n * / private static void maxheapify (int a [], int i, int n) {int слева, правый, локальный; 2 * i + 1; ]) {i = right;} if (loc! = i) {a [a) i] = a [loc] ^ a [i]; i] = a [loc] ^ a [i];} else {break;}}}}} / ** * Выберите Sorting напрямую * * * @param a * @param n * / public static void selectsort (int a [ ], int n) {int i, j, local; (a [j] <a [loc]) {loc = j;}} if (loc! = i) {a) {a) [i] = a [i] ^ a [loc]; a [i] ^ a [loc]; (int a [], int n) {int i, j, tmp; 0; Сортировать * * * @param a * @param n * / public static bubblesort (int a [], int n) {int i, j; (j = 0; j <n -i -1; j ++) {if (a [j]> a [j +1]) {a [a j] = a [j] ^ a [j + 1]; * @param a * / public static void prantarr (int a []) {for (int i = 0; i <. printf ("%d/n", a [i]);} else {system.out.printf ("%d", a [i]);}}}}}}