Сравнение эффективности сортировки
Цель - сравнить эффективность пузырьковой и быстрой сортировки, а также выяснить, какой метод сортировки использует метод arr.sort().
При помощи функции getRandom() генерируем массив случайных чисел, состоящий из 100000 элементов.
function getRandom() {
var arr = [];
for(let i = 0; i < 100000; i++) {
var num = Math.floor((Math.random() * 100));
arr.push(num);
}
return arr;
}
Для сортировки массива будем использовать методы пузырьковой сортировки bubbleSort(arr)
function bubbleSort(arr) {
var n = arr.length;
for (var i = 0; i < n - 1; i++){
for (var j = 0; j < n - 1 - i; j++){
if (arr[j + 1] < arr[j]){
var t = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = t;
}
}
}
return arr;
}
И метод быстрой сортировки quickSort(arr)
function quickSort(arr) {
if (arr.length == 0) return [];
var a = [],
b = [],
p = arr[0];
for (var i = 1; i < arr.length; i++){
if (arr[i] < p) a[a.length] = arr[i];
else b[b.length] = arr[i];
}
return quickSort(a).concat(p, quickSort(b));
}
Алгоритмы сортировки взяла здесь
Для определения скорости сортировки создадим функцию
function time(fn) {
const start= new Date().getTime();
fn();
const end = new Date().getTime();
return end - start
}
var fn1 = bubbleSort;
var fn2 = quickSort;
time(fn1) // 15518
time(fn2) // 3555
Быстрая сортировка оправдала своё название и оказалась почти в пять раз быстрее пузырьковой.
Проверим скорость сортировки встроенным методом arr.sort()
function time() {
const start= new Date().getTime();
getRandom().sort();
const end = new Date().getTime();
return end - start
}
time()
Результат - 71 ms