Array.prototype.sort()
Содержание:
- Функция сравнения
- Читайте также:
- Сортировка по имени
- Сортировка дат
- Definition and Usage
- Пузырьковая сортировка на JavaScript
- обновленный ответ (октябрь 2014 года)
- МЕНЮ
- Фото презентаций на компьютере
- Сортировка объектов массива
- Плагин-оболочка
- Bubble Sort
- Сортировка таблицы по заголовкам
- Сортировка времени
- Basic Array Sorting
- Прошивки для iPhone 5 (GSM) A1428
- Предисловие
- Передаём функцию в array.sort()
- Сортируем массив в числовом порядке
- Сортировка слов и чисел
- Comparing Elements
- Сортировка слиянием на JavaScript
- Sorting an Array
- Мои минимальные/максимальные методы JavaScript
- Definition and Usage
- финал вывод
Функция сравнения
Назначение функции Compare заключается в определении альтернативного порядка сортировки.
Функция Compare должна возвращать отрицательное, нулевое или положительное значение в зависимости от аргументов:
function(a, b){return a-b}
Когда функция Sort () сравнивает два значения, она отправляет значения в функцию Compare и сортирует значения в соответствии с возвращаемым (отрицательным, нулевым, положительным) значением.
Примере:
При сравнении 40 и 100 метод Sort () вызывает функцию Compare (40100).
Функция вычисляет 40-100 и возвращает-60 (отрицательное значение).
Функция сортировки будет сортировать 40 как значение ниже 100.
Этот фрагмент кода можно использовать для экспериментов с сортировкой по числу и по алфавиту:
<button onclick=»myFunction1()»>Sort Alphabetically</button><button
onclick=»myFunction2()»>Sort Numerically</button><p id=»demo»></p><script>var points = ;
document.getElementById(«demo»).innerHTML = points;function
myFunction1() { points.sort(); document.getElementById(«demo»).innerHTML
= points;}function myFunction2() { points.sort(function(a, b){return
a — b}); document.getElementById(«demo»).innerHTML = points;}
</script>
Читайте также:
Сортировка по имени
В наши дни сортировка по возрасту сотрудника может выглядеть довольно бесчувственной и некорректной, так что давайте отсортируем по именам сотрудников в возрастающем порядке. Вспомните, что по-дефолту, сортировка массива, который содержит примитивы, такие как строки, происходит в алфавитном порядке. Что говорит о том, что вам просто надо вызвать метод, без любой функции сравнения, в общем просто . Это не работает, так как данные по которым мы хотим отсортировать не являются массивом. Так что же делать? Фокус тут в том, чтобы вручную написать функцию сравнения, которая отсортирует массив по-алфавиту, что в свою очередь даст нам указать где находятся данные строк. Давайте посмотрим:
employees.sort(function(a, b){var nameA=a.name.toLowerCase(), nameB=b.name.toLowerCase()if (nameA < nameB) //сортируем строки по возрастанию return -1if (nameA > nameB) return 1return 0 // Никакой сортировки})
Это отсортирует массив employees по именам в возрастающем порядке, так что теперь это Christine, это Edward и так далее. Тут мы сравниваем две строки a.name с b.name и возвращаем -1, 1 или 0, в соответствии с сортировкой, точно определенной формулой, которую использует сам , без передачи какой-либо другой функции. Как вы уже наверное выяснили, в JavaScript вы можете без сомнений сравнивать две строки.
Сортировка дат
Существует множество способов записи дат, что делает их довольно сложными для анализа для сортировки. Однако мы можем охватить большинство из них следующим образом:
Итак, что мы здесь делаем? Во-первых, вот логика: если все даты отформатированы YYYYMMDD, они будут корректно сортироваться с численной сортировкой. Наш парсер может сортировать следующие форматы даты:
- YYYY-MM-DD
- YYYYMMDD
- DD/MM/YYYY
- month DD, YYYY
Сначала мы вырезаем тире, что делает YYYY-MM-DD готовыми к парсингу. Затем мы заменяем имя месяца или аббревиатуру на его числовое значение. Наконец, мы должны переместить числа для DD/MM/YYYY и month DD, YYYY. Вот что делают последние два выражения. Чтобы попробовать, вставьте этот список в наш HTML:
И вызовите это следующим образом:
Является ли это идеальным парсером даты? Ни в коем случае; мы не можем сортировать DD/MM/YY, потому что нет способа узнать, в каком веке это происходит. Кроме того, мы не можем отличить DD/MM/YY и MM/DD/YY, поэтому нам просто нужно выбрать один.
Definition and Usage
The sort() method sorts the items of an array.
The sort order can be either alphabetic or numeric, and either ascending (up) or descending
(down).
By default, the sort() method sorts the values as strings in alphabetical
and ascending order.
This works well for strings («Apple» comes before «Banana»). However, if
numbers are sorted as strings, «25» is bigger than «100», because «2» is bigger
than «1».
Because of this, the sort() method will produce an incorrect result when sorting
numbers.
You can fix this by providing a «compare function» (See «Parameter
Values»
below).
Note: This method changes the original array.
Пузырьковая сортировка на JavaScript
Метод сортировки, который многие обычно осваивают раньше других из-за его исключительной простоты, называется пузырьковой сортировкой (bubble sort), в рамках которой выполняются следующие действия: проход по файлу с обменом местами соседних элементов, нарушающих заданный порядок, до тех пор, пока файл не будет окончательно отсортирован. Основное достоинство пузырьковой сортировки заключается в том, что его легко реализовать в виде программы. Для понимания и реализации этот алгоритм — простейший, но эффективен он лишь для небольших массивов. Сложность алгоритма: .
Суть алгоритма пузырьковой сортировки состоит в сравнении соседних элементов и их обмене, если они находятся не в надлежащем порядке. Неоднократно выполняя это действие, мы заставляем наибольший элемент «всплывать» к концу массива. Следующий проход приведет к всплыванию второго наибольшего элемента, и так до тех пор, пока после итерации массив не будет полностью отсортирован.
Скопировать
function BubbleSort(A) // A - массив, который нужно{ // отсортировать по возрастанию. var n = A.length; for (var i = 0; i < n-1; i++) { for (var j = 0; j < n-1-i; j++) { if (A < A) { var t = A; A = A; A = t; } } } return A; // На выходе сортированный по возрастанию массив A.}
обновленный ответ (октябрь 2014 года)
я был очень раздражен этим естественным порядком сортировки строк, поэтому мне потребовалось довольно много времени, чтобы исследовать эту проблему. Надеюсь, это поможет.
есть довольно много пользовательских реализаций там, пытаясь сделать сравнение строк более точно называется «естественный порядок сортировки строк»
когда я » играл «с этими реализациями, я всегда замечал какой-то странный выбор» естественного порядка сортировки», а точнее ошибки (или упущения в лучших случаях).
как правило, специальные символы (пробел, тире, амперсанд, скобки и т. д.) не обрабатываются правильно.
затем вы обнаружите, что они появляются в разных местах, как правило, это может быть:
- некоторые будут между прописными буквами » Z «и строчными буквами «a»
- какой будет между ‘9’ и прописные «а»
- некоторые будут после строчной буквы ‘Z’
когда можно было бы ожидать, что специальные символы будут «сгруппированы» вместе в одном месте, за исключением специального символа пробела, возможно (который всегда будет первым символом). То есть либо все перед цифрами, либо все между цифрами и буквами (строчные и прописные буквы «вместе» друг за другом), либо все после букв.
мой вывод заключается в том, что все они не могут обеспечить последовательный порядок, когда я начинаю добавлять едва необычные символы (т. е. символы с диакритическими знаками или символами, такими как тире, восклицательный знак и так далее).
исследования на заказ реализации:
- https://github.com/litejs/natural-compare-lite: не удается последовательно сортировать https://github.com/litejs/natural-compare-lite/issues/1 и http://jsbin.com/bevututodavi/1/edit?js, консоль, сортировка основных латинских символовhttp://jsbin.com/bevututodavi/5/edit?js, консоль
- https://github.com/javve/natural-sort : не сортировка последовательно, см. выпуск https://github.com/javve/natural-sort/issues/7 и смотрите основные латинские символы сортировки http://jsbin.com/cipimosedoqe/3/edit?js, консоль
- https://github.com/overset/javascript-natural-sort: кажется, довольно пренебрегают с февраля 2012 года, не удается последовательно сортировать, см. выпуск https://github.com/overset/javascript-natural-sort/issues/16
- http://www.davekoelle.com/files/alphanum.js, не удается последовательно сортировать, см. http://jsbin.com/tuminoxifuyo/1/edit?js, консоль
собственные реализации «естественного порядка сортировки строк» браузеров через
самая старая реализация (без аргументов locales и options) поддерживается IE6+, см. http://msdn.microsoft.com/en-us/library/ie/s4esdbwz (v=vs.94). aspx (прокрутите вниз до метод localeCompare ().
Встроенный способ делает намного лучшую работу по сортировке, даже международные и специальные символы.
Единственная проблема с использованием метод заключается в том, что «используемая локаль и порядок сортировки полностью зависят от реализации». Другими словами, при использовании localeCompare, таких как stringOne.localeCompare (stringTwo): Firefox, Safari, Chrome & IE имеют другой порядок сортировки для строк.
исследование браузера-родной реализации:
-
http://jsbin.com/beboroyifomu/1/edit?js, console — сравнение основных латинских символов с localeCompare()
http://jsbin.com/viyucavudela/2/ — сравнение основных латинских символов с localeCompare () для тестирования на IE8 - http://jsbin.com/beboroyifomu/2/edit?js, console — основные латинские символы в сравнении строк: проверка согласованности в строке vs, когда символ один
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare- IE11 + поддерживает новые аргументы locales & options
сложность «строки естественного порядка сортировки»
реализация твердого алгоритма (что означает: последовательный, но также охватывающий широкий спектр символов) является очень сложной задачей. UTF8 содержит более 2000 символов & покрывает больше чем 120 скрипты (языках).
Наконец, есть некоторые спецификации для этой задачи, она называется «алгоритм сортировки Unicode», который можно найти в http://www.unicode.org/reports/tr10/ . Вы можете найти дополнительную информацию об этом по этому вопросу, который я опубликовал https://softwareengineering.stackexchange.com/questions/257286/is-there-any-language-agnostic-specification-for-string-natural-sorting-order
МЕНЮ
Панель иконокЗначок менюАккордеонВкладкиВертикальные вкладкиЗаголовки вкладокВкладки полностраничныеВкладки при наведенииВерхняя навигацияОтзывчивый верхний навигаторНавигация с иконкамиМеню поискаСтрока поискаФиксированная боковая панельАнимированные боковые панелиОтзывчивая боковая панельПолноэкранная навигация наложенияМеню Off-CanvasБоковые кнопки навигацииБоковая панель с иконкамиМеню с горизонтальной прокруткойВертикальное менюНижняя навигацияОтзывчивая нижняя навигацияГраницы навигацииМеню по правому краюСсылка меню по центруМеню равной шириныФиксированное менюСкольжение вниз по полосе прокруткиСкрыть меню при прокруткеУменьшить меню при прокруткеЛипкая навигацияНавигация на изображенияВыпадающее менюВыпадающий при кликеВыпадающее меню в навигацииВыпадающий список в боковой навигацииОтзывчивая навигация с выпадающимПодменю навигацияВсплывающее менюМега менюМобильное менюМеню занавесСвернуть боковой барСвернуть боковую панельПагинацияХлебные крошкиГруппа кнопокГруппа вертикальных кнопокЛипкий социальный барНавигация таблеткиОтзывчивый заголовок
Фото презентаций на компьютере
Сортировка объектов массива
Массивы JavaScript часто содержат объекты:
Пример
var cars = ;
Даже если объекты имеют свойства разных типов данных, метод может использоваться для сортировки массива.
Решение состоит в том, чтобы написать функцию сравнения для сравнения значений свойств:
Пример
cars.sort(function(a, b){return a.year — b.year});
Сравнение свойств строки немного сложнее:
Пример
cars.sort(function(a, b){ var x = a.type.toLowerCase(); var y = b.type.toLowerCase();
if (x < y) {return -1;}
if (x > y) {return 1;} return 0;});
❮ Prev
Next ❯
Пожалуйста, включите JavaScript для просмотра комментариев, предоставленных Disqus.
Плагин-оболочка
Если вы не знакомы с написанием плагинов jQuery, посмотрите скринкаст «Джеффри Вэй» «Вы все еще не можете создать плагин jQuery?» Он определенно вам поможет чувствовать себя удобнее, работая с jQuery! (истинное признание: я бы никогда не написал плагин).
Мы создадим наш плагин, называемый datasort, таким образом: мы передадим ему массив элементов для сортировки; мы можем указать четыре параметра.
- datatype (тип данных, которые вы сортируете)
- sortElement (дочерний элемент, который вы хотите сортировать по желанию)
- sortAttr (атрибут, который вы хотите сортировать, по желанию)
- reverse (направление, в котором они должны сортироваться)
Таким образом, полностью модифицированный вызов к нашему плагину может выглядеть следующим образом:
Вот оболочка плагина:
Итак, вот как это будет работать: мы будем устанавливать все переменные в начале. Затем, если параметр datatype является строкой, мы найдем соответствующую функцию сортировки в объекте datatypes и отсортируем его; если параметр datatype является функцией, мы будем сортировать ей. Наконец, если для параметра reverse установлено значение true, мы изменим порядок отсортированных элементов (поскольку объекты jQuery не являются истинными массивами JavaScript, функция reverse не будет работать на них, поэтому мы можем использовать $.makeArray( ), чтобы превратить одно в другое, а затем, как только все будет в обратном порядке, мы снова обернем это в jQuery!).
Bubble Sort
How it works:
step-1: you compare the first item with the second. If the first item is bigger than the second item. you swap them so that the bigger one stays in the second position.
step-2:And then compare second with third item. if second item is bigger than the third, we swap them. otherwise, they stayed in their position. Hence, the biggest among first three is in the third position.
step-3:we keep doing it. until we hit the last element of the array. In that way we bubble up the biggest item of the array to the right most position of the array.
step-4: Look at the inner loop in the code below.
step-5: We repeat this process, starting from the last item of the array. look at the outer loop in the code below. We do this way, so that after finishing the first inner loop, the biggest one will be in the last item of the array.
step-6: and then we move backward inside the outer loop.
same thing is going on….
Сортировка таблицы по заголовкам
Щелкните заголовки, чтобы отсортировать таблицу.
Нажмите «Имя», чтобы отсортировать по имени «Страна», чтобы отсортировать по странам.
При первом щелчке направление сортировки будет возрастать (от A до Z).
Щелкните еще раз, и направление сортировки будет нисходящим (от Z до A):
Имя | Страна |
---|---|
Berglunds snabbkop | Швеция |
North/South | Великобритания |
Alfreds Futterkiste | Германия |
Koniglich Essen | Германия |
Magazzini Alimentari Riuniti | Италия |
Париж specialites | Франция |
Island Trading | Великобритания |
Laughing Bacchus Winecellars | Канада |
Пример
<table id=»myTable2″><tr><!— При нажатии на заголовок запустите функцию sortTable с параметром,0 для сортировки по именам, 1 для сортировки по стране: —><th onclick=»sortTable(0)»>Имя</th><th onclick=»sortTable(1)»>Страна</th></tr>…<script>function sortTable(n) { var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0; table = document.getElementById(«myTable2»); switching = true; // Set the sorting direction to ascending: dir = «asc»; /* Сделайте цикл, который будет продолжаться до тех пор, пока никакого переключения не было сделано: */ while (switching) { // Начните с того, что скажите: переключение не выполняется: switching = false; rows = table.rows; /* Цикл через все строки таблицы (за исключением во-первых, который содержит заголовки таблиц): */ for (i = 1; i < (rows.length — 1); i++) { // Начните с того, что не должно быть никакого переключения: shouldSwitch = false; /* Получите два элемента, которые вы хотите сравнить, один из текущей строки и один из следующей: */ x = rows.getElementsByTagName(«TD»); y = rows.getElementsByTagName(«TD»); /* Проверьте, должны ли две строки поменяться местами, основанный на направлении, asc или desc: */ if (dir == «asc») { if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) { // Если это так, отметьте как переключатель и разорвать цикл: shouldSwitch = true; break; } } else if (dir == «desc») { if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) { // Если это так, отметьте как переключатель и разорвать цикл: shouldSwitch = true; break; } } } if (shouldSwitch) { /* Если переключатель был отмечен, сделайте переключатель и отметьте, что переключатель был сделан: */ rows.parentNode.insertBefore(rows, rows); switching = true; // Каждый раз, когда выполняется переключение, увеличьте это число на 1: switchcount ++; } else { /* Если переключение не было сделано и направление «asc», установите направление на «desc» и снова запустите цикл while. */ if (switchcount == 0 && dir == «asc») { dir = «desc»; switching = true; } } }}</script>
Сортировка времени
Сортировка значений времени должна быть одним из самых сложных заданий для сортировки: мы должны иметь возможность принимать 12-часовое время, 24-часовое время и значения с или без тегов AM/PM и секунды. Я думаю, что проще отсортировать время по алфавиту, хотя оно и содержит только числа. Почему? Рассмотрим эти две временные метки: 00:15:37 и 12:15. Первый должен быть первым, но если мы отсортируем их по номеру, они будут проанализированы как плавающие, и в итоге появятся 1537 и 1215. Теперь второе значение будет первым. Кроме того, при сортировке в алфавитном порядке нам не нужно вынимать двоеточия (parseFloat() уберет их). Итак, вот как это делается.
Давайте рассмотрим это по строкам.
Начнем с наших переменных: извлеченных значений и регулярного выражения для проверки метки PM.
Затем мы начнем цикл for, пройдя каждое из значений, которые мы сортируем; во-первых, мы разбиваем его на массив в двоеточиях. Мы создаем простой способ добраться до последних элементов массива: нашу «последнюю» переменную. Затем мы проверяем наше регулярное выражение PM на последнем элементе нашего массива; если он возвращает true, это значение имеет тег PM. Поэтому мы добавим 12 к первому элементу в нашем массиве, который будет значением часа; мы делаем это, потому что нам нужны все значения, которые будут отформатированы в формате 24 часов
(Обратите внимание, что для этого мы должны преобразовать его в число, добавить 12, а затем вернуть его обратно в строке). Наконец, мы снова используем регулярное выражение PM, чтобы удалить эту метку из последнего элемента массива
В этом последнем фрагменте мы проверяем значение часа для двух условий: оно меньше 10? и имеет ли строка только один символ? Это важно, потому что значение типа 08 будет анализироваться как 8 и быть меньше 10; но мы пытаемся увидеть, нужно ли нам добавить ноль к началу. Если строка имеет только один символ, то мы добавляем нуль, поэтому 3 становится 03
Это будет приводить числа в порядок!
Перед присоединением к массиву мы удалим любые метки AM. Так что теперь это…
… можно сортировать с этим…
И готово! Вот плоды нашего труда:
Basic Array Sorting
By default, the JavaScript function converts each element in the array that needs to be sorted into a string, and compares them in Unicode code point order.
You may be wondering why 32 comes before 5. Not logical, huh? Well, actually it is. This happens because each element in the array is first converted to a string, and comes before in Unicode order.
It’s also worth noting that unlike many other JavaScript array functions, actually changes, or mutates the array it sorts.
To avoid this, you can create a new instance of the array to be sorted and modify that instead. This is possible using an array method that returns a copy of the array. For example, Array.slice:
Or if you prefer a newer syntax, you can use the spread operator for the same effect:
The output is the same in both cases:
Try it out
See the Pen
MWWqbKY by SitePoint (@SitePoint)
on CodePen.
Using alone wouldn’t be very useful for sorting an array of objects. Thankfully, the function takes an optional parameter, which causes the array elements to be sorted according to the return value of the compare function.
Прошивки для iPhone 5 (GSM) A1428
Предисловие
Итак, как именно сортировка работает в JavaScript? Это не слишком сложно: любой объект массива имеет метод сортировки. Если вы не передадите ему никаких параметров, он преобразует объекты в массив в строки, сортирует их в псевдо-алфавитном порядке и возвращает назад. Обычно это выглядит ужасно; рассмотрите сортировку чисел 0 — 10 в алфавитном порядке. Вы получите следующее: . К счастью, мы можем передать функцию методу сортировки. Эта функция должна принимать два параметра (два элемента для сравнения): затем она будет возвращать 0, если они равны, отрицательное число, если первый параметр имеет приоритет, или положительное число если второй параметр должен быть первым. Таким образом, цифры на самом деле — самая простая вещь для сортировки «вручную»:
Очевидно, что это вернет 0, если числа равны, отрицательное число, если должно быть первым, и положительное число, если должно быть первым.
Мы рассмотрим сортировку нескольких разных типов данных, в нескольких форматах; но все это будет намного полезнее, если мы обернем ее в плагин jQuery, так что начнем с создания этой оболочки!
Передаём функцию в array.sort()
Как говорилось выше, допускает дополнительные параметры в виде функций (давайте назовем её ). Формат такой функции будет выглядеть таким образом:
function sortfunction(a, b){//Тут можно сказать, что сравнивается a и b, и возвращается -1, 0 или 1.}array.sort(sortfunction)
Когда такая функция передаётся в , элементы массива сортируются, основываясь на взаимосвязи между каждой парой элементов и и значением, отдаваемым функцией. Есть три возможных числа, которые отдадутся функцией:<0 (меньше нуля), 0, >0 (больше нуля).
В первом случае, когда меньше нуля, отсортируется с индексом меньшими, чем .
При нуле: и будут рассматриваться как равные и сортировка производиться не будет.
Больше нуля: Сортировка будет меньшего индекса, чем .
То есть, для того, чтобы сортировка прошла по числам и в возрастающем порядке, функция-параметр должна быть такой:
function sortfunction(a, b){ return (a — b)}
Дальше больше.
Сортируем массив в числовом порядке
Чтобы отсортировать массив в числовом порядке, просто передайте к , а затем возвратите разницу между и , оба параметра автоматически отправятся в функцию:
var myarray=myarray.sort(function(a,b){ return a — b}) //Массив будет
Это работает так, как и должно работать, так как всякий раз когда меньше, чем , возвращается негативное значение, что ведет к тому, что меньший элемент всегда будет выставляться левее большего, а другими словами, порядок будет выстроен по возрастанию
Обратите внимание на то, что мы определили нашу функцию сортировки прямо внутри , как анонимную, вместо того, чтобы создавать отдельную функцию и передавать ещё в — оба варианта выдадут одинаковый результат
Сортировка массива в числовом порядке, но по убывающей, отличается не многим и всего лишь требует реверса двух операндов и :
var myarray=myarray.sort(function(a,b){ return b — a}) //Массив становится
Сортировка слов и чисел
Мы наконец здесь: интересная часть! Мы начнем с создания двух простых функций для нашего объекта datatypes. Они будут просто передавать значения в base.extract(), а затем передавать эти возвращаемые значения в соответствующий класс сортировки.
Наш алфавитный сортировщик должен быть очевиден. Сортировщик чисел делает немного больше: перед передачей извлеченных значений он вырезает знак доллара спереди. Я сохранил это регулярное выражение простым, но вы могли бы разобрать много разных форматов здесь, если бы хотели получить что-то более сложное. Давайте уже опробуем наш плагин; создайте базовую страницу html:
Я включил таблицу и два списка (и я кратко их описал)
Обратите внимание на наши вызовы плагинов: мы используем тип данных по умолчанию для таблицы, но сортируем по ячейкам таблицы с классом last; попробуйте изменить это на «td.first». Затем мы сортируем списки численно и меняем один из них
Вот доказательство наших трудов:
Довольно приятно, но это были относительно простые ценности; что, если мы хотим иметь возможность сортировать несколько форматов для одного типа?
Comparing Elements
The function reads values as textual data (strings). A string like will be read as higher than because of its first character: is bigger than . Therefore, you will get wrong answers in your list. This problem can be solved using a compare() function:
Example Copy
The same method applies for sorting descending arrays:
Example Copy
When specifying a different sorting order, you should also use the function. It will bring back one of three values: a positive, negative or a zero:
Example Copy
In the example below, when 20 and 50 are compared, the method is calling the function . Then, a calculation of 20-50 happens, and the answer is -30 (a negative value). Now, the sort JavaScript function will proceed with array sort with the lower value being 20 rather than 50:
Example Copy
Pros
- Simplistic design (no unnecessary information)
- High-quality courses (even the free ones)
- Variety of features
Main Features
- Nanodegree programs
- Suitable for enterprises
- Paid certificates of completion
100% FREE Pros
- Professional service
- Flexible timetables
- A variety of features to choose from
Main Features
- Professional certificates of completion
- University-level courses
- Multiple Online degree programs
100% FREE Pros
- Great user experience
- Offers quality content
- Very transparent with their pricing
Main Features
- Free certificates of completion
- Focused on data science skills
- Flexible learning timetable
100% FREE
Сортировка слиянием на JavaScript
Скопировать
function Merge(a,low,mid,high) //Вспомогательная функция.{ var b = new Array(high+1-low), h, i, j = mid+1, k, h = low, i = 0; while (h <= mid && j <= high ) { if (a <= a){ b=a; h++; } else { b=a; j++; } i++; } if (h > mid){ for (k = j; k <= high; k++){ b=a; i++; } } else { for (k = h; k <= mid; k++){ b=a; i++; } } for (k=0; k<=high-low; k++) a=b; return a;}function MergeSort(A) //Функция сортировки слиянияем.{ function merge_sort(a,low,high) { if (low < high) { var mid = Math.floor((low+high)/2); merge_sort(a, low, mid); merge_sort(a, mid+1, high); Merge(a, low, mid, high); } } var n = A.length; merge_sort(A, 0, n-1); return A;}
Sorting an Array
Мои минимальные/максимальные методы JavaScript
Самое быстрое решение заключается в использовании «домашний» метод.
Эта функция выполняет циклический перебор по массиву, сравнивая каждое значение с максимальным найденным значением:
Пример (найти Макс.)
function myArrayMax(arr) { var len = arr.length
var max = -Infinity; while (len—) {
if (arr> max) {
max = arr; }
} return max;}
Эта функция выполняет циклический перебор массива, сравнивая каждое значение с наименьшим найденным значением:
Пример (найти мин.)
function myArrayMin(arr) { var len = arr.length
var min = Infinity; while (len—) {
if (arr <min) {
min = arr; }
} return min;}
Definition and Usage
The sort() method sorts the items of an array.
The sort order can be either alphabetic or numeric, and either ascending (up) or descending
(down).
By default, the sort() method sorts the values as strings in alphabetical
and ascending order.
This works well for strings («Apple» comes before «Banana»). However, if
numbers are sorted as strings, «25» is bigger than «100», because «2» is bigger
than «1».
Because of this, the sort() method will produce an incorrect result when sorting
numbers.
You can fix this by providing a «compare function» (See «Parameter
Values»
below).
Note: This method changes the original array.
финал вывод
поэтому, учитывая текущий уровень поддержки, обеспечиваемый пользовательскими реализациями javascript, с которыми я столкнулся, мы, вероятно, никогда не увидим, что что-то приближается к поддержке всех этих символов и скриптов (языков). Поэтому я бы предпочел использовать собственный метод localecompare () браузеров. Да, у него есть обратная сторона несогласованности между браузерами, но базовое тестирование показывает, что он охватывает гораздо более широкий диапазон символов, позволяя сплошную и значимую сортировку заказы.
так как указано , ответ на ваш вопрос:
читайте далее:
- https://softwareengineering.stackexchange.com/questions/257286/is-there-any-language-agnostic-specification-for-string-natural-sorting-order
- как вы делаете сравнение строк в JavaScript?
- Javascript: естественный вид буквенно-цифровой строки
- сортировка массива числовых и алфавитных элементов (естественная сортировка)
- сортировка смешанных буквенно-цифрового массив
- https://web.archive.org/web/20130929122019/http://my.opera.com/GreyWyvern/blog/show.dml/1671288
- https://web.archive.org/web/20131005224909/http://www.davekoelle.com/alphanum.html
- http://snipplr.com/view/36012/javascript-natural-sort/
- http://blog.codinghorror.com/sorting-for-humans-natural-sort-order/
спасибо к хорошему ответу Shog9, который поставил меня в» правильном » направлении, я считаю