js数组排序的几种方法

// sort() 数组对象排序 其原理是冒泡排序,即比较相邻的元素,如果第一个比第二个大,就交换他们两个。
var arr = [
         {name:"小恭",age:11},
         {name:"小发",age:3},
         {name:"小喜",age:12},
         {name:"小财",age:40}
         ];
console.log(arr);
console.log(arr[0]);
var compare = function(obj1,obj2){
    var val1 = obj1.age;
    var val2 = obj2.age;
    if(val1 < val2){
       return 1;
    }else if(val1 > val2){
       return -1;
    }else{
       return 0;
    }
}
console.log("数组对象排序:");
var sortArr = arr.sort(compare);
console.log(sortArr);
console.log(sortArr[0]);
 
 
//插入排序,每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中
var canArr = [0,4,2,6,7,8,2,14,57,8,99,0,45,32,12,1,1,1,1,45,0,9,8,7,6,5,4,3,2,115,67,68,56,55,43,21];
console.log(canArr);
var quchArr = canArr.distinct();
console.log(quchArr);
//插入排序
function insert(arr){  
 var s;   
  //升序
  for (var i = 1; i < arr.length; i++) { 
      for (var j = i; j > 0; j--) {   
      if (arr[j] < arr[j - 1]) {       
     s=arr[j];         
  arr[j]=arr[j-1];     
  arr[j-1]=s ;
  //console.log(arr);//可以打印出来每一个改变的步骤     
       }    
     }   
   }   
   //降序
 for (var i = 1; i < arr.length; i++) { 
     for (var j = i; j > 0; j--) {   
       if (arr[j] < arr[j - 1]) {       
     s=arr[j];         
  arr[j]=arr[j-1];     
  arr[j-1]=s ;
  //console.log(arr);//可以打印出来每一个改变的步骤     
      }          }   
   }  
  return arr;
}
console.log("插入排序:");
console.log(insert(quchArr));
 
 
//冒泡排序 即比较相邻的元素,如果第一个比第二个大,就交换他们两个。
function bubble(arr) { 
var s ;
// for (var i =0;i<arr.length;i++) { 
//   for (var j = 0; j < arr.length; j++) {
// if (arr[j] > arr[j + 1]){ 
// s = arr[j]; 
// arr[j]=arr[j+1]; 
// arr[j+1]=s; 
// } 
//    }
// }
for (var i =0;i<arr.length;i++) { 
  for (var j = 0; j < arr.length; j++) {
if (arr[j] < arr[j + 1]){ 
s = arr[j]; 
arr[j]=arr[j+1]; 
arr[j+1]=s; 
} 
   }
}
 return arr;
}
console.log("冒泡排序:");
 
console.log(bubble(quchArr));
 
 
 
以上几种方法鄙人稍作总结,如有更好欢迎分享
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值