1. Hill sort
Key point: selection of interval values
function shellsort(arr,gap) { for(var g=0;g<gap.length;g++){ for (var i = gap[g]; i < arr.length; i++) { var temp=arr[i]; for(var j=i;j>=gap[g] && arr[j-gap[g]]>=temp;j=j-gap[g]){ arr[j]=arr[j-gap[g]]; } // var j = i; // while(j>=gap[g] && arr[j-gap[g]]>=temp){ // arr[j]=arr[j-gap[g]]; // j-=gap[g]; // } arr[j]=temp; } } return arr; }
Second, merge sort
function mergesort(arr) { if (arr.length<2) { return;} var step=1; var left,right; while(step<arr.length){ left=0; right=step; while(right+step<=arr.length){ mergeArray(arr,left,left+step,right,right+step); left=right+step; right=left+step; } if(right<arr.length){ mergeArray(arr,left,left+step,right,arr.length); } step*=2; // console.log(step); } return arr; }
3. Quick Sort
May cause stack overflow
function qSort(arr) { if (arr.length ==0) return []; var lesser = []; var greater = []; var pivot=arr[0]; var len=arr.length; for (var i = 1; i < len; i++) { //At this time, i starts from 1 and cannot contain the reference value if(arr[i]>pivot){ greater.push(arr[i]); }else{ lesser.push(arr[i]); } } return qSort(lesser).concat(pivot,qSort(greater)); }