1. 直接排序

    ---最简单的排序

  注 : sort函数,可以自定义数组的排序规则

  //方式一
         var arr=[5,3,1,2,4,6];
                arr.sort (function (a,b){
                    return a - b;
                });
                console.log(arr);   //1,2,3,4,5,6

    //方式二
        function play(a,b){
            if(a > b){
                return 1;
            }else{
                return -1;
            }
        }
       var arr2 = [5,3,1,2,4,6];
        console.log(arr2.sort(play)); //1,2,3,4,5,6

    

  原理 :   判断第一个数是否大于第二个数,如果是就不动它,否则就交换它们的位置,只是在调用这个排序函数一定要注意怎么调用它

2. 按字符串排序

 

 var arr = ['**','****','*','***'];
            arr.sort(function(a,b){
                return a.length - b.length;
            });
            console.log(arr);   // ["*", "**", "***", "****"]

3. 冒泡排序

  原理 :   重复地走访要排序的数列,一次比较两个,如果他们的顺序错误就交换位置,走访会一直执行下去,直到没有数列项需要交换

 var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];
         for(var  i = 0; i < arr.length; i++){              //遍历数据的长度
               for(var j = 0; j<arr.length;j++){               //进行第二轮的循环
                   if(arr[j] >arr[j+1]){           //判断如果第一位数大于第二位数的话
                      var temp = arr[j];      //交换位置
                      arr[j] = arr [j+1];
                      arr[j+1] = temp;
                    }
               }
          }
                 console.log(arr);

  冒泡排序动图效果 :

   https://user-gold-cdn.xitu.io/2016/11/30/f427727489dff5fcb0debdd69b478ecf?imageView2/0/w/1280/h/960/format/webp/ignore-error/1

 4.选择排序

  原理 :   首先在未排序的数列中找到最小(大)值,排在排序序列的起始位置,然后在剩余未排序的数列中继续找最小(大)值,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

   function play(arr){
          //先循环遍历第一遍
          len = arr.length;
          var min,        //声明存储最小值的变量
          temp;
          for(var i = 0; i<len;i++){     //进行第一轮的循环
            min = i;              //最小值等于循环到的 i
                  for(var j = i; j<len;j++){      //进行第二遍的循环
                       if(arr[j] < arr[min]){      //当arr中 j 小于 最小值时 --找到最小的数
                            min = j;        //就把 j当做是最小的数
                          }
                  }
                  temp = arr[i];              //将temp赋值为arr中的 i
                  arr[i] = arr[min];             //将他们交换位置
                  arr[min] = temp;     //将他们交换位置
           }
             return arr;         //将arr返回
   }
       var arr=[3,44,38,1,56,90,0,5,47,15,36,26,27,2,46,4,19,50,48];
       console.log(play(arr));

  

  选择排序动态效果图 :

  https://user-gold-cdn.xitu.io/2016/11/29/138a44298f3693e3fdd1722235e72f0f?imageView2/0/w/1280/h/960/format/webp/ignore-error/1

5. 插入排序

  原理 :   原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。

   function play (arr){
            var len = arr.length;
            var temp;
            for(var i = 0; i < len; i++){
                temp = arr[i];      //存储i的值

                for(var j = i; j>0 && temp < arr[j-1] ;j--){
                     // 当前值和之前的每个值进行比较,发现有比当前值小的值就进行重新赋值
                   arr[j] = arr[j-1];
                   arr[j-1] = temp;
                }

            }
            return arr;
        }
        var arr=[3,44,38,1,56,90,0,5,47,15,36,26,27,2,46,4,19,50,48];
         console.log(play(arr));

  插入排序动态效果图 :

  https://user-gold-cdn.xitu.io/2016/11/29/f0e1e3b7f95c3888ab2791b6abbfae41?imageView2/0/w/1280/h/960/format/webp/ignore-error/1

12-17 05:35
查看更多