JavaScript实现快速排序的完整攻略
快速排序是一种常用的排序算法,它的时间复杂度为O(nlogn),是一种高效的排序算法。本文将为您提供JavaScript实现快速排序的完整攻略,包括快速排序的原理、JavaScript实现快速排序的步骤和两个示例。
快速排序的原理
快速排序的原理是通过分治法将一个大问题分解为多个小问题,然后递归地解决这些小问题。具体步骤如下:
-
选择一个基准元素,将数组分为两个子数组,小于基准元素的放在左边,大于基准元素的放在右边。
-
对左右两个子数组分别递归地进行快速排序。
-
合并左右两个子数组。
JavaScript实现快速排序的步骤
以下是JavaScript实现快速排序的步骤:
- 编写快速排序函数。
javascript
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
const pivotIndex = Math.floor(arr.length / 2);
const pivot = arr.splice(pivotIndex, 1)[0];
const left = [];
const right = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
}
- 调用快速排序函数。
javascript
const arr = [3, 1, 4, 1, 5, 9, 2, 6, 5 3, 5];
const sortedArr = quickSort(arr);
console.log(sortedArr);
输出结果为:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
。
示例1:使用快速排序对字符串数组进行排序
以下是使用快速排序对字符串数组进行排序的示例:
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
const pivotIndex = Math.floor(arr.length / 2);
const pivot = arr.splice(pivotIndex, 1)[0];
const left = [];
const right = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
}
const arr = ['banana', 'apple', 'orange', 'grape', 'pear'];
const sortedArr = quickSort(arr);
console.log(sortedArr);
输出结果为:["apple", "banana", "grape", "orange", "pear"]
。
示例2:使用快速排序对对象数组进行排序
以下是使用快速排序对对象数组进行排序的示例:
function quickSort(arr, key) {
if (arr.length <= 1) {
return arr;
}
const pivotIndex = Math.floor(arr.length / 2);
const pivot = arr.splice(pivotIndex, 1)[0];
const left = [];
const right = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i][key] < pivot[key]) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left, key).concat([pivot], quickSort(right, key));
}
const arr = [
{ name: 'John', age: 25 },
{ name: 'Mary', age: 30 },
{ name: 'Bob', age: 20 },
{ name: 'Alice', age: 35 },
];
const sortedArr = quickSort(arr, 'age');
console.log(sortedArr);
输出结果为:
[
{ name: 'Bob', age: 20 },
{ name: 'John', age: 25 },
{ name: 'Mary', age: 30 },
{ name: 'Alice', age: 35 }
]
以上是JavaScript实现快速排序的完整攻略,包括快速排序的原理、JavaScript实现快排序的步骤和两个示例。