用js实现算法:冒泡排序、插入排序和快速排序

一、冒泡排序

 1 function bubbleSort(arr){
 2     for(var i=0;i<arr.length;i++){
 3         for(var j=0;j<arr.length-i-1;j++){
 4             if(arr[j]>arr[j+1]){
 5                  var temp=arr[j];
 6                  arr[j]=arr[j+1];
 7                  arr[j+1]=temp;
 8             }
 9         }
10 
11     }
12  }
13 
14 var arr=[12,4,9,89,10];
15 bubbleSort(arr);
16 console.log(arr);

 

二、插入排序
 1 function insertSort(arr){
 2     //从1开始遍历arr
 3     for(var i=1;i<arr.length;i++) {
 4        var t=arr[i];//将当前值保存在t中
 5        var p=i-1;//定义p为i-1
 6       //反复: p>=0&&p位置的值>t
 7        while(p>=0&&arr[p]>t){
 8         //p位置的值,赋值给p+1位置
 9          arr[p+1]=arr[p];
10          p--;//p减一
11        }//(循环退出)
12        arr[p+1]=t;//将t保存到p+1位置
13     }
14         return arr;
15 } 
16 
17  var a=[5,1,2,4,8,6,3,77];
18  var res=insertSort(a);
19  console.log(res);

三、快速排序
 1 function quickSort(arr){
 2     if(arr.length>1){
 3       var c=parseInt(arr.length/2);
 4       var center=arr.splice(c,1);
 5       for(var i= 0,left=[],right=[];i<arr.length;i++){
 6             if(arr[i]<center) left.push(arr[i]);
 7             else right.push(arr[i]);
 8       }
 9       return quickSort(left).concat(center,quickSort(right));
10     }else{ 
11          return arr; 
12     }
13 }
14   
15 var a=[5,1,2,4,8,6,3,7];
16 var res=quickSort(a);
17 console.log(res);

 

 


 1 function quickSort(arr) {
 2     if(arr.length<=1) {
 3         return arr;
 4     }
 5     let leftArr = [];
 6     let rightArr = [];
 7     let q = arr[0];
 8     for(let i = 1,l=arr.length; i<l; i++) {
 9         if(arr[i]>q) {
10             rightArr.push(arr[i]);
11         }else{
12             leftArr.push(arr[i]);
13         }
14     }
15     return [].concat(quickSort(leftArr),[q],quickSort(rightArr));
16 }
17 
18 module.exports = quickSort;

 

 

posted @ 2017-07-28 09:29  Sun·傲宇  阅读(197)  评论(0编辑  收藏  举报