一、冒泡排序
原理
冒泡排序将待排序元素两两比较,根据比较结果交换位置,一遍冒泡会让至少一个元素到达最终位置。重复这个过程,直到排序完成。
JS实现
function bubbleSort(arr) {
const len = arr.length;
for (let i = 0; i < len; 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;
}
示例
const arr = [4, 5, 1, 3, 2];
console.log(bubbleSort(arr)); // [1, 2, 3, 4, 5]
二、快速排序
原理
快速排序采用分治的思想,选取一个基准值(pivot),将数组中所有小于等于它的元素放在左边,所有大于它的元素放在右边。然后递归地对左右两个子数组进行快速排序。
JS实现
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 = [4, 5, 1, 3, 2];
console.log(quickSort(arr)); // [1, 2, 3, 4, 5]
以上是两种经典排序算法的JS实现方法,并包含了示例说明。冒泡排序和快速排序有各自的优劣,需要根据实际场景选择合适的排序算法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:几种经典排序算法的JS实现方法 - Python技术站