美文网首页
数组排序

数组排序

作者: 樱桃小白菜 | 来源:发表于2021-03-27 15:11 被阅读0次

    通过数组的方法进行数组排序

    reverse() 方法颠倒数组中元素的顺序。
    var fruits = ["Banana", "Orange", "Apple", "Mango"]
    
    console.log(fruits.reverse())  // Mango,Apple,Orange,Banana
    
    sort() 方法排序顺序可以是字母或数字,并按升序或降序排序

    可以通过比较函数来得到我们想要的顺序

    var arr = [8,40,9,1];
    function l(a, b) {
        return a - b;
    }
    function r(a, b) {
        return b - a;
    }
    console.log(arr.sort(l));   //  [1, 8, 9, 40]
    console.log(arr.sort(r));   //  [40, 9, 8, 1]
    

    注意: 当数字是按字母顺序排列时其实是调用数组的 toString()方法,得到字符串,然后再对得到的字符串进行排序

    利用 sort() 按奇偶数进行排序

    function f(a, b) {  //排序函数
        var a = a % 2;  //获取参数a的奇偶性
        var b = b % 2;  //获取参数b的奇偶性
        if (a == 0) return 1;  //如果参数a为偶数,则排在左边
        if (b == 0) return -1;  //如果参数b为偶数,则排在右边
    }
    
    var a = [3,1,2,4,5,7,6,8,0,9];  //定义数组
    a.sort(f);  //根据数字大小由大到小进行排序
    
    console.log(a);  //返回数组[3,1,5,7,9,0,8,6,4,2]
    

    快速排序

    var  arr = [3, 0, 6, 5, 20, 1, 9]
    
    function mySort(arr) {
      if(arr.length<=1){  // 数组只有一项不用进行比较,返回当前的数组
        return arr
      }
    
      let left = []
      let right = []
    
      let ind = Math.floor(arr.length / 2);  //取中间的索引值
      let mid = arr[ind]  //数组中间那项
      arr.splice(ind, 1)  //拿出中间项后的数组
    
      arr.map((item) => {
        if (item > mid) {
          right.push(item)
        } else {
          left.push(item)
        }
      })
      return mySort(left).concat(mid, mySort(right))
      // 左右的数组内用相同方法进行排序,最好把这几项拼接在一起
    }
    
    console.log(mySort(arr))  // [0, 1, 3, 5, 6, 9, 20]
    

    冒泡排序

    比较相邻项的值,如果前者比后者大,交换顺序;

    进行一轮比较后,最后一个值为最大的值;

    进行下一轮比较,比上次少比较一项;

    以此类推,比较剩下最后一项的时候,比较结束;

    var arr = [8, 0, 7, 6, 5, 3, 10, 2, 1, 9]
    
    function mySort(arr) {
      for (var i = 0, len = arr.length;i < len - 1; i++) {
        for (var j = 0, len1 = arr.length; j < len1 - i - 1; j++) {
          var temp = null
          if (arr[j] > arr[j + 1]) {
            temp = arr[j + 1]
            arr[j + 1] = arr[j]
            arr[j] = temp
          }
        }
      }
      return arr
    }
    
    console.log(mySort(arr))  // [0, 1, 2, 3, 5, 6, 7, 8, 9, 10]
    

    参考: js 实现数组排序

    相关文章

      网友评论

          本文标题:数组排序

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