排序

sort排序

  var arr=[1,4,2,7,5,83,2,90];
    arr.sort(function(n1,n2){    //返回负值,位置不变
       return n1-n2;
    });
    console.log(arr);
    arr.sort(function(n1,n2){      //返回正值,位置交换
        return n2-n1;                 //改为Math.random()-0.5就可以实现随机排序
    })
    console.log(arr);

递归实现随机排序:每次随机在原集合删除一个数,并把这个数添加到新数组中,直到原集合为空

var arr=[54,1,45,2,7,32,7,78,34];
 console.log("arr:"+arr);
 function pai(arr){
   var li=[];
  var i=0;
   var s=function(){
    var index=Math.floor(Math.random()*arr.length);
    li=li.concat(arr.splice(index,1));
   };
   while(arr.length!=0){s()};
   return li;
  }
  console.log(pai(arr));
  console.log("arr:"+arr);

洗牌算法:从第一个开始,随机在集合中找出一个数与该数交换位置,直到遍历一遍为止

var arr=[54,1,45,2,1,32,78,34];
      console.log("原来:"+arr);
      function pai(arr){
       var temp;
       for(var i=0;i<arr.length;i++){
        var index=Math.floor(Math.random()*arr.length);
        temp=arr[i];
        arr[i]=arr[index];
        arr[index]=temp;
       }
       return arr;
      }
      console.log(pai(arr));

选择排序:从第一个开始,每次在该数后找到一个最大或最小的数与该数交换位置

var arr=[54,1,45,2,7,32,7,78,34];
          var temp,index;
          for(var i=0;i<arr.length-1;i++){
           temp=arr[i];
           index=i;
              for(var j=i+1;j<arr.length;j++){
               if(arr[j]<temp){
                temp=arr[j];
                index=j;
               }
              }
              arr[index]=arr[i];
              arr[i]=temp;
         }
          console.log(arr);

冒泡排序:从前往后依次比较两个相邻数的大小,交换位置,遍历到n-1遍,每次都会把最大或最小的数放到最后

 var arr=[54,1,45,2,7,32,78,34];
  var temp;
  for(var i=0;i<arr.length-1;i++)
      for(var j=0;j<arr.length-1-i;j++)
       if(arr[j]>arr[j+1]){
        temp=arr[j+1];
        arr[j+1]=arr[j];
        arr[j]=temp;
      }
   console.log(arr);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值