美文网首页
排序问题

排序问题

作者: 我是走A牧 | 来源:发表于2018-02-26 17:08 被阅读0次

    1、利用sort进行排序

    var arr=[10,11,56,1,5,6,7,33,99,100,8];
     function sortNumber(a,b)
     {
       return a - b
     }
    
     console.log(arr.sort(sortNumber))
    

    2、冒泡排序

     function sort(arr){
          for(var i=0;i<arr.length-1;i++){
            console.log(arr[i])
            for(var j=0;j<arr.length-i-1;j++){
              if(arr[j]>arr[j+1]){
                var d=arr[j];
                arr[j]=arr[j+1];`
                arr[j+1]=d;
              }
            }
          }
        }
    

    3、选择排序

    function sort1(arr){
       var minidnex,temp;
        for(var i=0;i<arr.length-1;i++){
              minidnex=i;
              for(var a=i+1;a<arr.length;a++){
                 if(arr[a]<arr[minidnex]){//找到最小值的索引
                   minidnex=a;
                   console.log(minidnex)
                 }
              }
          temp=arr[i]; //把最小值放在空位置
          arr[i]=arr[minidnex];//把最小值放在最前面
          arr[minidnex]=temp;//把大值放在相对应的位置
          console.log(arr)
        }
     }
    

    4、插入排序

    function insertionSort1(arr) {
        var temp, inner;
        for (var outer = 1; outer <= arr.length - 1; ++outer) {
          temp = arr[outer];
          inner = outer;
          while (inner > 0 && (arr[inner - 1] >= temp)) {
            arr[inner] = arr[inner - 1];
            --inner;
          }
         arr[inner] = temp;
          console.log(arr)
        }
      }
    

    5 二元分算法(排序)

     var arr1=[44,1,22,55,4,6,88,77,999,888];
        function merge(left,right){
          var result=[];
          while(left.length&&right.length){
            if(left[0] < right[0]) {
              result.push(left.shift());
            }
            else {
              result.push(right.shift());
            }
          }
          console.log(left+"| "+right);
          return result.concat(left).concat(right);//总把最后最大的那个数进行合并
        }
    
       function crr(arr){
         if(arr.length==1){return arr}
         var mid=Math.floor(arr.length/2);
    //     console.log(mid)
         var leftarr=arr.slice(0,mid);
         var rightarr=arr.slice(mid);
         return merge(crr(leftarr),crr(rightarr))
       }
    
       console.log(crr(arr1));
    

    相关文章

      网友评论

          本文标题:排序问题

          本文链接:https://www.haomeiwen.com/subject/qefonxtx.html