Пузырьковые сортировки
Принцип пузырька - сделать самый большой элемент или самый маленький элемент «поплавок»
Вставьте сортировку, выберите сортировку, быстрая сортировка, пузырьковые сортировки - все сравнение сортировки
Идеи
Сравните два смежных числа один за другим, положите десятичные тквимали впереди и большие числа сзади.
Шаг 1: Сравните первые и вторые числа, поместите десятичное значение до и большое количество после. Сравните второе число и третье число, поместите десятичное значение до и после большого числа, продолжайте так, пока не будут сравниваться последние два числа, поместите десятичное значение до и после большого числа.
Шаг 2: Во второй поездке: все еще начинается с первого логарифма (поскольку это может быть связано с обменом второго номера и третьего числа, первое число больше не меньше, чем второе число), поместите десятичное значение до и после размещения большого числа, сравните до предпоследнего числа (первая позиция уже является самой большой в полной позиции). В конце второй поездки новое максимальное число получается в предпоследней позиции (фактически второе по величине число во всей последовательности).
Если это продолжается, повторите приведенный выше процесс, пока сортировка не будет завершена.
Поскольку десятичные десятичные знаки всегда помещаются вперед, а большое количество помещается назад в процессе сортировки, что эквивалентно росту пузырьков, это называется сортировкой пузырьков.
Эффект анимации с сортировкой пузырьков
Реализация: этот код относительно прост и является самым основным и базовым кодом в алгоритме. Полем Полем
Три вещи, чтобы отметить
1. Метод обмена классами может быть решен в JavaScript с A = [B, B = A] [0].
заменять
Кода -копия выглядит следующим образом:
var, a, b, темп
Temp = a;
a = b;
b = темп
Этот метод обмена
2. Обратите внимание на кэш переменных цикла, где массив.
3. Обратите внимание на встроенный цикл, который должен сравниваться с первого числа с n -й последним номером, а n - номер шага сравнения
Функция Bubblesort (Array) {var l = array.length; for (var i = 0; i <l; i ++) {// Количество сравниваемых шагов - это длина массива для (var j = 0; j <li; j ++) {// Количество встроенных обменов сравнивается от первого числа. {Array [j] = [Array [j - 1], Array [j - 1] = Array [j]] [0] // Swap Elements здесь}} for (var k = 0; k <l; k ++) {console.log (массив [k]+",");} Консоль. [6,54,6,22,5,7,8,2,34]; Bubblesort (A);Эффект анимации
Вставка сортировки
Это очень просто, это шаги для нас, чтобы прикоснуться и вставить карты!
Идеи:
1 Во -первых, допустим, мы коснулись карты, и все карты в наших руках установлены на пустые = [] затронули толчок (arr [0])
2 Уберите следующую карту, установите ее, сканируйте сзади на все наши карты пустыми (уже отсортировано)
3 Если карта в вашей руке пуста [umpty.length-n] (отсортировано) больше, чем новый элемент, перенесите карту в следующую позицию (пространство выпуска) пусто [ulm.length-n] = пусто [ulw.length-n+1]
4-й шаг.
5 Вставьте A в эту позицию пусто [пусто.
6 Повторите шаг 2
Тем не менее, код JavaScript по -прежнему немного трудно реализовать, код следующим образом:
Функция вставки (arr) {var l = arr.length; var empty = []; // пустое массив, указывая на нашу руку пустую.push (arr [0]); // Давайте сначала коснемся изображения для (var i = 1; i <l; i ++) {// Обратите внимание, что отправная точка здесь 1, потому что мы прикоснулись к одному! if (arr [i]> пусто [umpt.length - 1]) {empty [ulm.length] = arr [i]} // Если он больше, чем упорядоченный массив, пусто, положите его непосредственно на конец для (var j = пусто. Когда Arr <определенное количество упорядоченного массива, нет необходимости переместить его. пусто [j] = пусто [j - 1]; // двигаться пустым [j - 1] = arr [i]; // Поместите значение в пустую позицию} // console.log (пусто)} возвращать пусто}Тогда более важной точкой знания здесь является символ &&, который означает «и», то есть условия с обеих сторон должны быть выполнены до того, как выражение будет установлено.
Символ && может также заменить, если, например, if (a) {fun ()} равен a && b
Еще один очень важный момент
Предполагая, что массив ARR, его «последний пункт»-ARR [arr.Length-1].
Сортировать анимацию
Выбор сортировки
Это также простой алгоритм сортировки.
Идеи:
Найдите самый маленький элемент - бросьте его в массив - найдите маленький снова - бросьте в массив и так далее.
Сначала найдите самый маленький элемент в несортированном массиве. Метод, который вы найдете, может использовать средства непрерывного суждения и назначения, то есть: пусть первая массива элементов [0] массива будет наименьшим элементом, а затем номер последовательности «минимальный элемент» в массиве составляет 0.
Затем перечислить над массивом. Если второй элемент массива меньше этого, то второй элемент - это самый маленький элемент и обновление «0» до «1».
После пересечения мы знаем, что подписание самого маленького элемента в этой серии - «n»; Он вынимается и сохраняется в начальной позиции последовательности сортировки (массив [n])
Затем продолжайте искать самый маленький элемент из оставшихся несортированных элементов, а затем поместите его в конце сортированной последовательности. Обратите внимание, что индекс обхода начинается с 1 в настоящее время. Потому что мы уже выбрали самый маленький элемент.
И так далее, пока все элементы не будут отсортированы.
Функция SelectSort (Array) {var min; var l = array.length; // кэшированная длина для (var i = 0; i <l; i ++) {// начало цикла, петля в 1 раза в общей сложности, и вы можете найти L -элементы min = i; // Предположим, что первый - самый маленький элемент для (var j = i+1; j <l; j ++) {//{/////{//{//{//начало loo lo (Array [min]> Array [j]) // Судите, является ли последующее min = j; // Обновление подростка «Минимум»} if (min! = i) {// Потому что здесь, потому что он работает в одном и том же массиве, вы можете обмениваться элементами непосредственно. Например, первый элемент массива - это я, а затем я обнаружил, что наименьшим элементом является массив [мин], поэтому мне нужно обмениваться этим мин с i. И так далее. Array [i] = [Array [min], Array [min] = Array [i]] [0]; // Swap Elements}} return Array;}Что еще отмечено здесь, так это метод написания обменного массива [i] = [массив [min], массив [min] = массив [i]] [0]
Легко обмениваться массивом [i] и массива [min] ~
Сортировать анимацию
Быстрый сортировка
Быстрый сортинг - это самый мощный алгоритм сортировки в настоящее время, который использует идею рекурсии.
Идеи
Выбор элемента из массива называется «эталонный». Это может быть непосредственно выбрано с помощью длины/2
Итерация через массив, все элементы с меньшим, чем эталонное значение, расположены перед ссылкой, и все элементы с большим, чем эталонное значение, расположены за эталоном (одно и то же число можно использовать с любой стороны). С точки зрения непрофессионала, мужчина стоит слева, а женщина стоит справа. Полем
Затем мы получаем массив массив = массив Larray, состоящий из частей, меньших, чем эталонный + массив Rarray, состоящий из частей, больше, чем эталонный.
Тогда нам нужно только «та же» процесс Ларрея и Раррея ~
Это требует использования рекурсионного письма. После обработки Ларрея разделена на эталон Ларрея, который меньше эталона Ларрея и больше, чем эталон Ларрея. Полем
Затем мы продолжаем делать что -то, мужчина стоит слева, и женщина стоит справа. Полем
Пока мы не обнаружим, что длина Ларрея стала 1, что недостаточно, чтобы быть снова разделенным, мы думаем, что сортировка закончилась.
функция QuickSort (arr) {var l = arr.length; // Длина кэшированного массива if (arr.length <= 1) {return arr}; // Если длина Larray и Rarray, которые мы получаем, меньше 1, то нет необходимости выстраивать ~ var num = math.floor (arr.length/2); // Выберите номер в середине массива. Обратите внимание, что длина/2 не обязательно является целым числом. Используйте math.floor -var numvalue = arr.splice (num, 1) [0]; // Используйте метод сплайсинга, чтобы взять элемент, обратите внимание на синтаксис var left = []; // Создать левый эталонный контейнер var ight = []; // Создать правый эталонный контейнер для (var i = 0; i <l; i += 1) {//rate array array array? left.push (arr [i]): справа Полем } return QuickSort (слева) .concat ([numvalue], QuickSort (справа)) // Рекурсивно, продолжайте работать на левом и правом массивах. }Эффект анимации:
Обратите внимание, что, хотя arr.splice (num, 1) рисует только одно число, результатом сращивания также является массив, который требует [0], в противном случае результатом будет странно куча массивов массивов (1). Полем Полем
Ссылка на сплайс: //www.vevb.com/w3school/js/jsref_splice.htm
Math.floor - это ссылка для Math Objects //www.vevb.com/w3school/js/js_obj_math.htm
Что такое рекурсия: http://baike.baidu.com/view/96473.htm
В дополнение к быстрой сортировке, вышеупомянутые четыре алгоритмы являются простыми алгоритмами сортировки, и эти четыре алгоритма очень часто принимаются во время интервью ~
Здесь все еще важно подчеркнуть, что приведенный выше алгоритм использует много соответствующих знаний о петлях и массивах, поэтому вы должны запомнить его!