javascript数组排序汇总

javascript数组排序汇总

rush:js;"> //排序算法 window.onload = function(){ var array = [0,1,2,44,4,324,5,65,6,34,43,62,51,56,76,7,45,8]; //var array = [4,3]; console.log('原始数组'); console.log(array); array = sorting.shellsort(array); // alert(array); console.log('排序后的数组') console.log(array); }

var sorting = {
//利用sort方法进行排序
systemSort: function(arr){
return arr.sort(function(a,b){
return a-b;
});
},//冒泡排序
bubbleSort: function(arr){
var len=arr.length,tmp;
for(var i=0;i<len-1;i++){
for(var j=0;j<len-1-i;j++){
if(arr[j]>arr[j+1]){
tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
return arr;
},//快速排序
quickSort: function(arr){
var low=0,high=arr.length-1;
sort(low,high);
function sort(low,high){
if(low<high){
var mid = (function(low,high){
var tmp = 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;
return low;
})(low,high);
sort(low,mid-1);
sort(mid+1,high);
}
}
return arr;
},//插入排序
insertSort: function(arr){
var len = arr.length;
for(var i=1;i<len;i++){
var tmp = arr[i];
for(var j=i-1;j>=0;j--){
if(tmp<arr[j]){
arr[j+1] = arr[j];
}else{
arr[j+1] = tmp;
break;
}
}
}
return arr;
},//希尔排序
shellsort: function(arr){
var h = 1;
while(h<=arr.length/3){
h = h*3+1; //O(n^(3/2))by Knuth,1973
}
for( ;h>=1;h=Math.floor(h/3)){
for(var k=0;k<h;k++){
for(var i=h+k;i<arr.length;i+=h){
for(var j=i;j>=h&&arr[j]<arr[j-h];j-=h){
var tmp = arr[j];
arr[j] = arr[j-h];
arr[j-h] = tmp;
}
}
}
}
return arr;
}
}

以上所述就是本文的全部内容了,希望大家能够喜欢。

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...