1. Bubble sort
varBubblesort = function (arr) { varFlag =true;varlen = arr.length; for(vari =0; I < Len-1; i++) {flag =true; for(varj =0; J < Len-1I J + +) {if(Arr[j] > arr[j +1]) {vartemp = arr[j+1]; arr[j+1] = Arr[j]; ARR[J] = temp; Flag =false; } }if(flag) { Break; } }};
2. Select sort
var selectsort = function (arr) {a Varmin; for(var i =0; I <arr.length-1; i++) {min= i; for(var j = i +1; J <arr.length; J + +) {if(arr[min]> Arr[j]) {min= J; } }if(I! =min) {Swap (arr, I,min); }Console.Log (i+1,": "+ arr); }}; function swap(arr, index1, Index2) {var temp = arr[Index1]; Arr[Index1]= Arr[Index2]; Arr[Index2]= temp;};
3. Insert Sort
varfunction (arr) { var len = arr.length, key; for (var1; i < len; i++) { var j = i; key = arr[j]; while (--j > -1) { if (arr[j] > key) { 1] = arr[j]; else { break; } } 1] = key; }};
4. Hill sort
varfunction (arr) { var gaps = [531]; for (var0; g < gaps.length; ++g) { for (var i = gaps[g]; i < arr.length; ++i) { var temp = arr[i]; for (var j = i; j >= gaps[g] && arr[j - gaps[g]] > temp; j -= gaps[g]) { arr[j] = arr[j - gaps[g]]; } arr[j] = temp; } }};
5. Merge sort
function mergesort(arr) { if(Arr.length <2) {return; }varStep =1;varLeft, right; while(Step < Arr.length) {left =0; right = step; while(Right + step <= arr.length) {mergearrays (arr, left, left + step, right, right + step); left = right + step; right = left + step; }if(Right < Arr.length) {mergearrays (arr, left, left + step, right, arr.length); } Step *=2; }} function mergearrays(arr, Startleft, Stopleft, Startright, stopright) { varRightarr =New Array(Stopright-startright +1);varLeftarr =New Array(Stopleft-startleft +1); K = Startright; for(vari =0; I < (Rightarr.length-1); ++i) {Rightarr[i] = arr[k]; ++k; } k = Startleft; for(vari =0; I < (Leftarr.length-1); ++i) {Leftarr[i] = arr[k]; ++k; } rightarr[rightarr.length-1] =Infinity;//Sentinel valueLeftarr[leftarr.length-1] =Infinity;//Sentinel value varm =0;varn =0; for(varK = Startleft; K < Stopright; ++K) {if(Leftarr[m] <= rightarr[n]) {Arr[k] = leftarr[m]; m++; }Else{Arr[k] = Rightarr[n]; n++; } }}
6. Quick Sort
var quickSort = function(arr, left, right) {VarI,J, T, pivot;if(left >= right){return; }Pivot = arr[left];I= left;J= right; while(I!=J){while (Arr[j] >= pivot && i < j) {j--; } while(arr[i]<= Pivot &&I<J){i++; } if(I<J){t = arr[i]; Arr[i] = Arr[j]; ARR[J] = t; }} arr[left]= Arr[j]; Arr[j]= pivot; QuickSort (arr, left,I-1); QuickSort (arr,I+1, right);}
Summary: Algorithm efficiency comparison:
Sorting Methods |
Average situation |
Best Case |
Worst Case Scenario |
Bubble sort |
O (N2) |
O (N) |
O (N2) |
Select sort |
O (N2) |
O (N2) |
O (N2) |
Insert Sort |
O (N2) |
O (N) |
O (N2) |
Hill sort |
O (Nlogn) ~o (n2) |
O (n^1.5) |
O (N2) |
Merge sort |
O (NLOGN) |
O (NLOGN) |
O (NLOGN) |
Quick Sort |
O (NLOGN) |
O (NLOGN) |
O (N2) |
JS implementation of a variety of common sorting algorithms