Сравнение эффективности сортировки


Цель - сравнить эффективность пузырьковой и быстрой сортировки, а также выяснить, какой метод сортировки использует метод 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