Эта статья в основном представляет, как Java достигает восемь обычно используемых алгоритмов сортировки: вставка сортировки, сортировка пузырьков, выбор сортировки, сортировки холмов, быстрая сортировка, сортировка слияния, порядок укладки и сортировку базы LST.
Классификация
1) Вставьте сортировку (непосредственно вставленная сортировка, сортировка холма)
2) Обменная сортировка (Сортировка пузырьков, быстрая сортировка)
3) Выберите Sorting (напрямую выберите Sorting, Stacked Sorting)
4) слияние сортировки
5) Распространение и сортировка (базовая сортировка)
Требуемое вспомогательное пространство больше всего: самое вспомогательное пространство для слияний и сортировки: самая быстрая скорость заказа на укладку: быстрая сортировка
Нестабильный: быстро сортируйте, сортируйте холм, сложенная сортировка.
Давайте посмотрим на отношения между 8 сортировкой:
1. напрямую вставьте сортировку
(1) Основные идеи: среди наборов, которые будут отсортированы, предполагая (n-1) [n> = 2] номер уже строк
В порядке, теперь номер NN вставлен в предыдущий заказ, так что этот номер N
Это также в порядке. Это неоднократно распространяется до тех пор, пока весь заказ не будет в порядке.
(2) Пример
(3) осознайте с Java
пакет com.njue; 17,18,23,34,15,35,25,53,51}; Temp = a [i]; тест;} for (int i = 0; i <a.length; i ++) {System.out.println (a [i]);}}}}}2. Сорт холмов (минимальная постепенная сортировка)
(1) Основные идеи: количество групп, которые будут отсортированы с помощью алгоритма, делится на несколько групп в соответствии с количеством увеличения D (N/2, N в качестве числа, которые нужно отсортировать). и отсортировано, а затем используйте меньшее увеличение (D/2), чтобы группировать его, а затем напрямую вставьте сортировку в каждую группу. Когда приращение уменьшается до 1, сортируется непосредственно, и сортируется.
(2) Пример:
(3) осознайте с Java
Publicclass shellsort {publicShellSort () {int a [] = {1,54,3,78,34,12,45,56,100}; .ceil (d1/2); ) {int j = id; j+d] = temp;}} if (d == 1) {break;} for (int i = 0; i <a.length; i ++) {System.out.println (a [i]);} }}3. Простой выбор сортировки
(1) Основные идеи: в группе, которая будет отсортирована, выберите наименьшее количество чисел и первую позицию;
Затем найдите наименьшее количество второго позиции в оставшихся числах, так что цикл сравнивается с последним номером последнего числа и последним номером.
(2) Пример:
(3) осознайте с Java
Общественный класс Selectsort {public selectsort () {int a [] = {1,54,3,78,34,12,45}; ) {int j = i+1; J]; i]);}}4. Сортировка кучи
(1) Основные идеи: сортировка упаковки -это выбор сортировки в форме дерева, который является эффективным улучшением прямого выбора сортировки.
Определение кучи заключается в следующем: последовательность (H1, H2, ..., Hn) с n -элементами и только как удовлетворенная (hi> = h2i, hi> = 2i+1) или (hi <= h2i, hi <= 2i 2i) +1) (i = 1,2, ..., N/2) называется кучей. Здесь мы обсуждаем только свай, которые соответствуют условиям первого. Из определения кучи можно увидеть, что верхний элемент (то есть первый элемент) должен быть самым большим элементом (большой верхний дамп). Полное двоичное дерево может интуитивно представлять структуру кучи. Верхняя часть кучи укоренена, а остальные -левые подэрески и правые подборы. Первоначально, последовательности, которые должны быть отсортированы, рассматриваются как двоичное дерево, хранящее в порядке, регулируя свой порядок хранения, чтобы они стали кучей. Затем обменяйте корневой узел с последним узлом кучи. Затем повторно настройте предыдущее (N-1) номер, чтобы сделать его кучей. В соответствии с этим типом, пока не будет только двух узлов, и обмениваться их, и, наконец, получите упорядоченную последовательность N узлов. С точки зрения описания алгоритма, секвенирование укладки требует двух процессов. Следовательно, существует две функции состав сортировки кучи. Одним из них является функция проникновения в кучу, а другой - многократно вызывать функцию проникновения для реализации функции сортировки.
(2) Пример:
Начальная последовательность: 46,79,56,38,40,84
Строительство:
Обмен, пейте максимальный номер из кучи
Оставшиеся узлы снова построены, и максимальное число обменивается
Нажмите по порядку: два последних узла в последней куче последних двух узлов обмениваются, один из них выгнал, и сортируется.
(3) осознайте с Java
Импорт java.util.arrays; , 15,35,25,53,51}; Длина; 0, arraylength-i); Гонерал -метод stub int tmp = data [i]; ) {// TODO Auto-Gonement Method Stub // родительский узел узла (последний узел) из LastIndex Start for (int i = (LastIndex-); i> = 0; i-) {// k Сохранить узел. Int k = i; BiggerIndex меньше, чем LastIndex, то есть правый узел k -узла, представляющий k -узел, представленный BiggerIndex+1, существует if (biggerIndex <astyIndex) {// Если значение правого узла больше, (данные BiggerIndex) ] <data [biggerIndex+1])) {// biggerIndex всегда записывает индекс biggerIndex ++;} // Если значение k -узла меньше, чем значение k -узела if (data [data k data k ] <Data [BiggerIndex]) {// Обмен их своп (Data, K, BiggerIndex); чем значение левого и правого узла.5. Bubble Sorting
(1) Основные идеи: в группе, которая будет отсортирована, все цифры в рамках, которые еще не разряжены, сравнение и регулировка двух смежных двух чисел сверху вниз, так что более крупные, несколько тонущих, меньше. То есть: всякий раз, когда сравниваются два смежных числа, они обнаруживают, что их требования сортировки и сортировки противоположны, и они будут обменять.
(2) Пример:
(3) осознайте с Java
Публичный класс Bubblesort {publicbbitsort () {inta [] = {49,38,65,97,76,13,49,78,34,5,4,62,98,54,54,56, 17,18,23 , 34,15,35,25,53,51}; Длина-1-I; +1] = temp;}}} for (int i = 0; i <a.length; i ++) {System.out.println (a [i]);}}6. быстро сортируйте
(1) Основные идеи: выберите контрольный элемент, обычно выбирайте первый элемент или последний элемент. Clackmark Element.
(2) Пример:
(3) осознайте с Java
Publicclass Quicksort {inta [] = {49,38,65,97,76,13,27,78,34,264,5,49,98,54,56,17,18 23,34,15,35,25 , 53,51}; [] list, int low) {int tmp = list [low]; High-;} List [low] = list [High]; [High] = список [low]; int low, int high) {if (low <high) {int midne = getMiddle (список, низкий, высокий); Сортировка с низким уровнем таблицы Массив пуст_ККИКСОРТ (A2,0, A2.Length -1);}}}7. слияние сортировки
(1) Основная сортировка: прикрепление (слияние) Метод сортировки заключается в объединении двух (или более) или более форм в новый порядок, то есть предисловие. Затем объедините последовательность порядка в общий порядок.
(2) Пример:
(3) осознайте с Java
Импорт java.util.arrays; , 15,35,25,53,51}; (a [i]);} publicvoid sort (int [] data, int left, int right) {// todo-goneraltedmethod stub if (слева <справа) { / / / найти промежуточный индекс int center = (слева+справа) /2; ;}} Publicvoid Merge (int [] Данные, int left, int center, int right) {// todo-goneorates int [data.length]; средний массив int project = left; ]) {tmparr [third ++] = data [Left ++];} else {tmparr [third ++] = data [mid ++]; ++];} while (слева <= center) {tmparr [third ++] = data [Left ++]; println (Arrays.toString (data));8. базовая сортировка
(1) Основные идеи: равномерные все значения сравнения (положительные целые числа) до одинаковой длины числа, а количество коротких цифр составляется до нуля. Затем, начиная с самого низкого положения и сортируя по очереди. Это станет упорядоченной последовательности из самого низкого положения до самой высокой сортировки.
(2) Пример:
(3) осознайте с Java
Импорт java.util.arraylist; , 54,101,56,17,18,23,34,15,35,25,53,51}; {System.out.println (a [i]);}} public void sort (int [] массив) {// сначала определить количество поездок сортировки; <array.length; Time ++;} // Создать 10 очередей; ins> (); <массив; int) math.pow (10, i i 10, i); 0; = queue.get (k);Выше всего содержимое этой статьи.