JS实现数组按升序和降序排列的方法有很多种,下面我将从简单到复杂分享几种方法。
sort()方法
sort()
方法是JS的一个数组方法,可以对数组排序。它有一个可选的排序函数,用于规定排序规则。
- 升序排列:
let arr = [3, 1, 4, 7, 2];
arr.sort((a, b) => a - b);
console.log(arr); // [1, 2, 3, 4, 7]
- 降序排列:
let arr = [3, 1, 4, 7, 2];
arr.sort((a, b) => b - a);
console.log(arr); // [7, 4, 3, 2, 1]
冒泡排序
冒泡排序是一种常见的排序算法,在实际应用中也常用到。它的实现思路是:比较相邻的两个元素,如果前一个元素比后一个元素大,就交换他们两个的位置。
- 升序排列:
function bubbleSort(arr) {
let len = arr.length;
for (let i = 0; i < len - 1; i++) {
for (let j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
}
return arr;
}
let arr = [3, 1, 4, 7, 2];
console.log(bubbleSort(arr)); // [1, 2, 3, 4, 7]
- 降序排列:
function bubbleSort(arr) {
let len = arr.length;
for (let i = 0; i < len - 1; i++) {
for (let j = 0; j < len - 1 - i; j++) {
if (arr[j] < arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
}
return arr;
}
let arr = [3, 1, 4, 7, 2];
console.log(bubbleSort(arr)); // [7, 4, 3, 2, 1]
快速排序
快速排序也是常用的一种排序算法,它的思路是:从数组中取出一个数,以这个数为基准,将小于这个数的放到其左边,大于这个数的放到其右边,然后递归处理左右两个子数组。
- 升序排列:
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
let middleIndex = Math.floor(arr.length / 2);
let middleValue = arr.splice(middleIndex, 1)[0];
let leftArr = [];
let rightArr = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < middleValue) {
leftArr.push(arr[i]);
} else {
rightArr.push(arr[i]);
}
}
return quickSort(leftArr).concat(middleValue, quickSort(rightArr));
}
let arr = [3, 1, 4, 7, 2];
console.log(quickSort(arr)); // [1, 2, 3, 4, 7]
- 降序排列:
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
let middleIndex = Math.floor(arr.length / 2);
let middleValue = arr.splice(middleIndex, 1)[0];
let leftArr = [];
let rightArr = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < middleValue) {
rightArr.push(arr[i]);
} else {
leftArr.push(arr[i]);
}
}
return quickSort(leftArr).concat(middleValue, quickSort(rightArr));
}
let arr = [3, 1, 4, 7, 2];
console.log(quickSort(arr)); // [7, 4, 3, 2, 1]
这些方法中,sort()
方法最为简单,但对于一些要求较高的情况可能需要自定义排序函数,而其他两个算法需要自己完成排序算法代码,但效率通常比sort()
方法高。在实际开发中应该根据不同的情况选择合适的排序方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现数组按升序及降序排列的方法 - Python技术站