js数组排序


 1 // 插入排序(抓牌)
 2 
 3 function insert(arr) {
 4   var handlArr = []
 5   handlArr.push(arr[0]) // 将数组的第一张牌放入手里handlArr
 6   for(var i = 0; i<arr.length;i++) {
 7     var item = arr[i] // 本次抓住的这张牌
 8     for(var t = handlArr.length-1;t >= 0;t--) {
 9       if (item > handlArr[t]) { // 比较抓住的牌与手里有的牌进行比较,如果新抓的牌大了,则放到handlArr[t]这张牌后边
10         handlArr.splice(t+1,0,item)
11         break;
12       }
13       if(t === 0) { // 如果新抓的牌是最小的,则放到最前面
14         handlArr.unshift(item)
15       }
16     }
17   }
18   return handlArr
19 }
20 console.log(insert([2,3,11,4,66,77,85,3,1,23]))

 

 1 //比较排序
 2 var sort = [22,33,11,44,33,32,76,78,65,99];
 3     for(var i=0;i<sort.length;i++){
 4         for(var t=0;t<sort.length-1;t++){
 5             if(sort[i]<sort[t]){
 6                 var temp = sort[i];
 7                 sort[i]=sort[t];
 8                 sort[t]=temp;
 9             }
10         }
11     }
12     console.log(sort)
1 //sort排序
2 var sort1 = [22,33,11,44,33,32,76,78,65,99];
3 function fr(a,b){
4         return a-b;
5     }
6 console.log(sort1.sort(fr))

 

 1 // 快速排序
 2 
 3 var arr = [111,2,3,44,55,76,33,22]
 4 
 5 function quick(arr){
 6   if(arr.length <= 1) {
 7     return arr
 8   }
 9   var centerIndex = Math.floor(arr.length/2),
10       centerVal = arr.splice(centerIndex,1)[0];
11   var leftArr = [],rightArr = [];
12   for(var i = 0;i<arr.length;i++) {
13     var curval = arr[i]
14     curval < centerVal? leftArr.push(curval) : rightArr.push(curval)
15   }
16   return quick(leftArr).concat(centerVal,quick(rightArr))
17 }
18 console.log(quick(arr)) // 2, 3, 22, 33, 44, 55, 76, 111

 

posted @ 2018-09-01 21:28  府谷市民小柴  阅读(115)  评论(0编辑  收藏  举报