javascript数组排序汇总
javascript数组排序汇总
//排序算法 window.onload=function(){ vararray=[0,1,2,44,4, 324,5,65,6,6, 34,4,5,6,2, 43,5,6,62,43, 5,1,4,51,56, 76,7,7,2,1, 45,4,6,7,8]; //vararray=[4,2,5,1,0,3]; console.log('原始数组'); console.log(array); array=sorting.shellSort(array); //alert(array); console.log('排序后的数组') console.log(array); } varsorting={ //利用sort方法进行排序 systemSort:function(arr){ returnarr.sort(function(a,b){ returna-b; }); }, //冒泡排序 bubbleSort:function(arr){ varlen=arr.length,tmp; for(vari=0;i<len-1;i++){ for(varj=0;j<len-1-i;j++){ if(arr[j]>arr[j+1]){ tmp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp; } } } returnarr; }, //快速排序 quickSort:function(arr){ varlow=0,high=arr.length-1; sort(low,high); functionsort(low,high){ if(low<high){ varmid=(function(low,high){ vartmp=arr[low]; while(low<high){ while(low<high&&arr[high]>=tmp){ high--; } arr[low]=arr[high]; while(low<high&&arr[low]<=tmp){ low++; } arr[high]=arr[low]; } arr[low]=tmp; returnlow; })(low,high); sort(low,mid-1); sort(mid+1,high); } } returnarr; }, //插入排序 insertSort:function(arr){ varlen=arr.length; for(vari=1;i<len;i++){ vartmp=arr[i]; for(varj=i-1;j>=0;j--){ if(tmp<arr[j]){ arr[j+1]=arr[j]; }else{ arr[j+1]=tmp; break; } } } returnarr; }, //希尔排序 shellSort:function(arr){ varh=1; while(h<=arr.length/3){ h=h*3+1;//O(n^(3/2))byKnuth,1973 } for(;h>=1;h=Math.floor(h/3)){ for(vark=0;k<h;k++){ for(vari=h+k;i<arr.length;i+=h){ for(varj=i;j>=h&&arr[j]<arr[j-h];j-=h){ vartmp=arr[j]; arr[j]=arr[j-h]; arr[j-h]=tmp; } } } } returnarr; } }
以上所述就是本文的全部内容了,希望大家能够喜欢。