JavaScript中数组的冒泡排序,快排,选择排序示例与sort方法的排序与乱序
排序
排序算法中最基础的算法类型
数据驱动显示:根据数据重构页面
冒泡排序
var arr=[3,38,5,44,15,36,26,27,47,2,46,4,19,50,48];
for(var i=0;i<arr.length-1;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
var temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
}
}
}
console.log(arr);
选择排序
var arr=[3,38,5,44,15,36,26,27,47,2,46,4,19,50,48];
var min;
for(var i=0;i<arr.length-1;i++){
min=i;
for(var j=i+1;j<arr.length;j++){
if(arr[min]>arr[j]) min=j;
}
var temp=arr[min];
arr[min]=arr[i];
arr[i]=temp;
}
console.log(arr);
快排
var arr=[3,38,5,44,15,36,26,27,47,2,46,4,19,50,48];
function quickSort(arr){
if(arr.length<=1) return arr;
var center=arr.splice(parseInt(arr.length/2),1);
var left=[];
var right=[];
for(var i=0;i<arr.length;i++){
if(arr[i]<center)left.push(arr[i]);
else right.push(arr[i]);
}
return quickSort(left).concat(center,quickSort(right));
}
var arr1=quickSort(arr);
console.log(arr1);
sort方法排序
var arr=[3,38,5,44,15,36,26,27,47,2,46,4,19,50,48];
arr.sort(function(a,b){
return a-b;
});
console.log(arr);
重构部分sort(只实现排序功能)
var arr=[3,38,5,44,15,36,26,27,47,2,46,4,19,50,48];
function sort(arr,fn){
for(var i=0;i<arr.length-1;i++){
for(var j=i+1;j<arr.length;j++){
if(fn(arr[i],arr[j])>0){
var temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
}
}
}
}
sort(arr,function(a,b){
return b-a;
});
console.log(arr);
var arr=["asd","er","ewr","yrtg","ohitoi"];
console.log("asd".charCodeAt(0));
arr.sort(function(a,b){
return a.charCodeAt(0)-b.charCodeAt(0);
});
console.log(arr);
sort实现乱序
var arr=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
Math.random() //求出随机值0-1之间 (不包括0和1)
arr.sort(function(){
return Math.random()-0.5;//减的数越靠近1越像倒序,越靠近0越像正序
});
console.log(arr);