Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   javascript сортировка option и value по алфавиту (https://javascript.ru/forum/dom-window/74169-javascript-sortirovka-option-i-value-po-alfavitu.html)

j0hnik 19.06.2018 19:20

Цитата:

Сообщение от рони
или так

Это уже слишком

j0hnik 19.06.2018 19:22

Цитата:

Сообщение от Manyasha
а зачем? Поменяются местами 5 и 5, это же не ошибка

лишняя операция

Manyasha 19.06.2018 19:26

Ну тогда так)):
return a - b;

рони 19.06.2018 19:38

Цитата:

Сообщение от Manyasha
Ну тогда так)):

сортируются в примере строки!!! а не числа

рони 19.06.2018 19:39

Manyasha,
Array/sort

рони 19.06.2018 19:46

Manyasha,
<script>
var stringArray = ['Банан', 'Абрикос', 'Зелень'];
stringArray.sort(function(a,b) {
  return a - b
})
document.write(stringArray + " false <br>")
stringArray.sort() //по умолчанию сортировка строк a > b ? 1 : a < b ? -1 : 0
document.write(stringArray + " true")

</script>

Alexandroppolus 19.06.2018 20:16

Цитата:

Сообщение от j0hnik (Сообщение 487744)
рони,
спасибо, вник в суть, к массивам больше 10 ячеек v8 применяет какую-то оптимизацию.

эта "оптимизация" называется быстрая сортировка )
маленькие массивы сортируются каким-то другим методом, который быстрее если мало элементов.

j0hnik 19.06.2018 20:27

Alexandroppolus,
наоборот, для маленьких оптимизации нет, для больших есть. помните эту кату с самописным реверсом??

Alexandroppolus 19.06.2018 20:40

j0hnik,
помню, только она тут не при чем.

на больших массивах быстрая сортировка уделывает все остальные, потому что она асимптотически выгоднее. На маленьких асимптотика работает слегка по другому (разница между n*n и n*ln(n) копеечная, в итоге начинают рулить коэффициенты), и какой-нибудь "пузырёк" может оказаться быстрее.

а так - оптимизация есть в обоих случаях. Ну и что, что массив маленький. А если надо отсортировать миллион таких маленьких? потому всё ускорено по максимуму

j0hnik 19.06.2018 21:09

https://jsperf.com/45435435tret больший по размерам массив сортируется быстрей. в хроме
console.log([0,1,2,3,4,5,6,7,8,9].sort((a,b)=>b)); //логичное поведение

console.log([0,1,2,3,4,5,6,7,8,9,1].sort((a,b)=>b)); //не логичное


Часовой пояс GMT +3, время: 14:53.