美文网首页
数组排序

数组排序

作者: 樱桃小白菜 | 来源:发表于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 实现数组排序

相关文章

  • iOS 各种排序

    数组排序 数组中字典排序 数组中字典按照某个value排序 排序方法

  • Java 数组的排序、逆序

    数组的排序、逆序测试数据 数组选择排序 数组冒泡排序 数组逆序

  • java 数组和list排序

    数组排序 其中有数组排序和数组对象排序 数组一些数字排序则直接用Arrays.sort()加数组就可以。数组对象则...

  • 数组

    数组的遍历 数组是值类型 数组的排序 冒泡排序 多维数组

  • 2018-01-14

    php数组排序 sort() - 以升序对数组排序 rsort() - 以降序对数组排序 asort() - 根据...

  • PHP排序算法

    排序算法 冒泡排序(数组排序) 快速排序(数组排序) 参考 http://www.cnblogs.com/enia...

  • 算法记录

    快速排序 基本算法: 归并排序讲数组分为两个子数组分别排序,并将有序的子数组归并使得整个数组排序; 快速排序通过一...

  • 选择排序

    选择排序 调用选择排序 生成数组 打印输出排序数组

  • 按照数组中的字符串顺序给另一个数组排序

    数组1 数组2: 数组1按照数组2的顺序排序 sortedUserDicts就是排序后的数组

  • 排序问题

    数组排序 数组排序最简单了,直接Arrays.sort(a); a是待排序的数组 根据对象中的成员变量来排序 这个...

网友评论

      本文标题:数组排序

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