19.06.2018, 19:20
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Сообщение от рони
|
или так
|
Это уже слишком
|
|
19.06.2018, 19:22
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Сообщение от Manyasha
|
а зачем? Поменяются местами 5 и 5, это же не ошибка
|
лишняя операция
|
|
19.06.2018, 19:26
|
Профессор
|
|
Регистрация: 21.09.2015
Сообщений: 196
|
|
Ну тогда так)):
return a - b;
|
|
19.06.2018, 19:38
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сообщение от Manyasha
|
Ну тогда так)):
|
сортируются в примере строки!!! а не числа
|
|
19.06.2018, 19:39
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
|
|
19.06.2018, 19:46
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
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>
|
|
19.06.2018, 20:16
|
|
Профессор
|
|
Регистрация: 25.10.2016
Сообщений: 1,012
|
|
Сообщение от j0hnik
|
рони,
спасибо, вник в суть, к массивам больше 10 ячеек v8 применяет какую-то оптимизацию.
|
эта "оптимизация" называется быстрая сортировка )
маленькие массивы сортируются каким-то другим методом, который быстрее если мало элементов.
|
|
19.06.2018, 20:27
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
Alexandroppolus,
наоборот, для маленьких оптимизации нет, для больших есть. помните эту кату с самописным реверсом??
|
|
19.06.2018, 20:40
|
|
Профессор
|
|
Регистрация: 25.10.2016
Сообщений: 1,012
|
|
j0hnik,
помню, только она тут не при чем.
на больших массивах быстрая сортировка уделывает все остальные, потому что она асимптотически выгоднее. На маленьких асимптотика работает слегка по другому (разница между n*n и n*ln(n) копеечная, в итоге начинают рулить коэффициенты), и какой-нибудь "пузырёк" может оказаться быстрее.
а так - оптимизация есть в обоих случаях. Ну и что, что массив маленький. А если надо отсортировать миллион таких маленьких? потому всё ускорено по максимуму
|
|
19.06.2018, 21:09
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
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)); //не логичное
|
|
|
|