排序的一些算法

终于有时间来写写我的博客,关于算法的问题,说起算法,我想每个程序员都会随口说出几种,今天我简单的总结了关于一些排序的算法:

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);

原文地址:https://www.cnblogs.com/melry/p/6123300.html