Пузырьковые сортировки
Пузырьковые сортировки, когда я увидел этот алгоритм, я вспомнил поговорку: «Десятичные плывут вверх, и большие числа погружаются». Через слой при сравнении слоя десятичные т дропа плавают к поверхности, а большое количество «погружают камни на дне воды». Это достигает эффекта сортировки. Сортировка пузырьков - это простой алгоритм сортировки. Он неоднократно посещает последовательность, которая будет сортироваться, сравнивает два элемента за раз и меняет их, если они неверны. Работа по посещению последовательности повторяется до тех пор, пока обмен не требуется, то есть последовательность не была отсортирована. Происхождение этого алгоритма заключается в том, что тем меньше элемент будет медленно «плавать» до вершины последовательности через обмен.
Работа алгоритма сортировки пузырьков заключается в следующем:
1. Сравните соседние элементы. Если первый больше, чем второй, обменяйте их на двоих.
2. Сделайте ту же работу для каждой пары соседних элементов, начиная с первой пары до последней пары в конце. На этом этапе последний элемент должен быть самым большим числом.
3. Повторите вышеуказанные шаги для всех элементов, кроме последнего.
4. Продолжайте повторять вышеуказанные шаги для меньшего количества и меньшего количества элементов каждый раз, пока не будет сравнивать пары чисел.
Диаграмма процесса сортировки пузырьков:
Пример кода
public class bubblesort {public static int [] bubblesort (int [] array) {for (int i = 0; i <array.length; i ++) {for (int j = 0; j <array.length-i-1; j ++) {if (array [j]> array [j+1]) {int temp = ray [j]; массив [j] = массив [j+1]; массив [j+1] = temp; }} System.out.println ("th"+(i+1)+"сортировка"); for (int k = 0; k <array.length; k ++) {System.out.print (Array [k]+""); } System.out.println (); } return Array; } / ** * @param args * / public static void main (string [] args) {int [] array = {7,3,9,5,6,8,1}; Bubblesort (массив); }}Результат печати:
1 -й заказ 3 7 5 6 8 1 9Sorting 2 -й заказ 3 5 6 7 1 8 9Sorting 3 5 6 1 7 8 9Sorting 4th Order 3 5 1 6 7 8 9Sorting 5 -й заказ 3 1 5 6 7 8 9Sorting 6th Order 1 3 5 6 7 8 9Sorting 7 -й заказ 1 3 5 7 7 7Sorting 7 -й заказ 1 3 5 6 7 8 9Sorting 7 -й. 1 3 5 5 6 7 8 9Sorting 7th Order 1 3 5 6 7 8 9 Сортировки 5 -го порядка 3 5 6 7 8 9Sorting 6 -й заказ 1 3 5 6 7 8 9Sorting 7th Order 1 3 5 6 7 8 9Sorting 7 -й заказ 1 3 5 5 7 8 9SORTING 5 -й заказ 3 5 6 7 8 8 8 -й Порядок 5 6 8 -й Порядок 5 6 7 8 -й. 9 Сортирование 5 -го порядка 3 5 6 7 8 9 9Sorting 5 -й заказ 3 5 6 7 8 9 Сортировки 5 -го порядка 3 5 6 7 8 9 9Sorting 5 -й заказ 3 5 6 7 8 9Sorting 5 -й заказ 3 5 6 7 8 9Sorting 5 -й заказ 5 -го порядка 5 -го порядка 5 -го порядка 5 -го порядка 5 -го порядка 5 -й
Бинарный поиск
После сортировки заказа нам также необходимо найти нужные данные, которые мы хотим. Дихотомический поиск является обычно используемым, разделам и базовым алгоритмом. Бинарный поиск заключается в поиске и сравнении с средней позиции отсортированных данных, аналогично средней паре деревянной палочки, так что он также называется складыванием и наполовину подключением. Это более эффективный метод поиска.
[Требования бинарного поиска]: 1. Структура последовательной памяти должна быть принята. 2. Ключ должен быть упорядочен в соответствии с размером ключевого слова.
[Плюсы и недостатки] Преимущества метода полуфинансирования заключается в том, что он имеет меньше времени сравнения, быстрой скорости поиска и хорошей средней производительности; Его недостаток заключается в том, что таблица, подлежащая поиску, является упорядоченной таблицей, и трудно вставить и удалить. Следовательно, метод получения половины подходит для упорядоченных списков, которые часто не изменяются и часто встречаются.
[Алгоритм подумал] Сначала сравните ключевые слова, записанные в средней позиции таблицы с ключевыми словами поиска. Если они равны, поиск будет успешным; В противном случае таблица будет разделена на две подтоки с промежуточной записью. Если ключевые слова, записанные в среднем положении, больше, чем ключевое слово поиска, дальнейший поиск предыдущего подтола, в противном случае дальнейший поиск следующего подтола.
Повторите приведенный выше процесс до тех пор, пока не будет найдена запись, которая соответствует условиям, чтобы поиск был успешным, или до тех пор, пока дочерняя таблица не будет не существует, поиск в настоящее время не удастся.
[Сложность алгоритма] , предполагая, что длина массива составляет n, сложности его алгоритма- o(log(n)), сложность времени в худшем случае- O(n)。
Пример кода
пакет com.somnus.array;/** * Метод двоичного поиска * @author compaq * */public class binarysearch {public static int binarysearch (int [] массив, int value) {int low = 0; int high = array.length-1; int middle = 0; while (low <= High) {midne = (low+high)/2; // 0 6 4 6 6 6 6 6 6 6 для (int i = 0; i <array.length; i ++) {System.out.print (Array [i]+""); if (i == Middle) // 3 5 6 Распечатайте разделитель сразу же после средней точки {System.out.print ("##"); }} System.out.println (); if (array [middle] == value) {return middle; } if (value <array [midne]) {high = middle - 1; } if (value> array [midne]) {low = middle + 1; }} return -1; } / ** * @param args * / public static void main (string [] args) {int [] array = {7,3,9,5,6,8,1}; int [] array1 = bubblesort.bubblesort (массив); int index = BinarySearch (Array1,1); System.out.println ("local:"+index); }}Результат печати:
1 -й заказ 3 7 5 6 8 1 9Sorting 2 -й заказ 3 5 6 7 1 8 9Sorting 3 5 6 1 7 8 9Sorting 4th Order 3 5 1 6 7 8 9SORTING 5 -й заказ 3 1 5 6 7 8 9 -й порядка 1 3 5 6 7 8 9SORTING 7 -й Орден 1 3 5 6 7 8 91 3 5 6 # # 8 91 3 # # # 5 7 8 9 8 9 8 7 8 7 8 7 8 9 7 8 7 8 7
Анализ и резюме
В алгоритмах поиска дихотомия самая быстрая, но должна быть упорядоченная последовательность. Это основы алгоритмов, и нам все еще нужно приложить много усилий, чтобы экспериментировать, суммировать, поглощать и придерживаться обучения алгоритму.