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;
}
}
以上所述就是本文的全部内容了,希望大家能够喜欢。