sort排序
var arr=[1,4,2,7,5,83,2,90];
arr.sort(function(n1,n2){ //返回负值,位置不变
return n1-n2;
});
console.log(arr);
arr.sort(function(n1,n2){ //返回正值,位置交换
return n2-n1; //改为Math.random()-0.5就可以实现随机排序
})
console.log(arr);
递归实现随机排序:每次随机在原集合删除一个数,并把这个数添加到新数组中,直到原集合为空
var arr=[54,1,45,2,7,32,7,78,34];
console.log("arr:"+arr);
function pai(arr){
var li=[];
var i=0;
var s=function(){
var index=Math.floor(Math.random()*arr.length);
li=li.concat(arr.splice(index,1));
};
while(arr.length!=0){s()};
return li;
}
console.log(pai(arr));
console.log("arr:"+arr);
洗牌算法:从第一个开始,随机在集合中找出一个数与该数交换位置,直到遍历一遍为止
var arr=[54,1,45,2,1,32,78,34];
console.log("原来:"+arr);
function pai(arr){
var temp;
for(var i=0;i<arr.length;i++){
var index=Math.floor(Math.random()*arr.length);
temp=arr[i];
arr[i]=arr[index];
arr[index]=temp;
}
return arr;
}
console.log(pai(arr));
选择排序:从第一个开始,每次在该数后找到一个最大或最小的数与该数交换位置
var arr=[54,1,45,2,7,32,7,78,34];
var temp,index;
for(var i=0;i<arr.length-1;i++){
temp=arr[i];
index=i;
for(var j=i+1;j<arr.length;j++){
if(arr[j]<temp){
temp=arr[j];
index=j;
}
}
arr[index]=arr[i];
arr[i]=temp;
}
console.log(arr);
冒泡排序:从前往后依次比较两个相邻数的大小,交换位置,遍历到n-1遍,每次都会把最大或最小的数放到最后
var arr=[54,1,45,2,7,32,78,34];
var temp;
for(var i=0;i<arr.length-1;i++)
for(var j=0;j<arr.length-1-i;j++)
if(arr[j]>arr[j+1]){
temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
console.log(arr);