终于有时间来写写我的博客,关于算法的问题,说起算法,我想每个程序员都会随口说出几种,今天我简单的总结了关于一些排序的算法:
1,冒泡排序:冒泡排序总共需要排序n-1趟,每趟比较n-1-趟数这么多次;每趟排序可能需要
交换多次元素位置,找到其中一个元素的最终未知.每次比较
都是相邻元素之间的大小比较.
var array=[1,3,2,5,6,7,11,8,10,9,4];
for (var i=0;i<array.length;i++) {
for (var j=0;j<array.length-1-i;j++) {
if (array[j]>array[j+1]) {
var temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
alert(array);
2,sort方法:js数组的方法,会改变原来的数组
var arr=[1,10,2,35,56,0,49];
arr .sort(function(obj1,obj2){
if(Number(obj1)>Number(obj2)){
return -1;//desc降
}else if(Number(obj1)<Number(obj2)){
return 1;//asc升
}else{
return 0;//same相同
}
})//这是一个升序排列,将1和-1交换,则变为降序排列;输出就ok啦;
3,选择排序法
var arr=[3,9,12,6,23,15,18];
for(var i=0;i<arr.length;i++){
var max=0;
for(var j=1;j<arr.length-i;j++){
if(arr[max]<arr[j]){
max=j;
}
}
if(max!=arr.length-i-1){
var temp=arr[max];
arr[max]=arr[arr.length-i-1];
/arr[arr.length-i-1]=temp;
}
}
alert(arr) ;
4.快速排序法
var arr=[4,7,1,6,8,5,12,9,0,9,11]
function quickSort(oldArray){
if(oldArray.length<=1){
return oldArray;
}
var privosIndex=Math.floor(oldArray.length/2);
var privos=oldArray.splice(privosIndex,1)[0];
var left=[];
var right=[];
for(var i=0;i<oldArray.length;i++){
if(oldArray[i]<privos){
left.push(oldArray[i])
}else{
right.push(oldArray[i])
}
}
return quickSort(left).concat(privos,quickSort(right));
}
var result=quickSort(arr)
console.log(result);