返回
数据从小到大规律 排序算法中的快速排序
前端
2023-10-26 03:04:24
理解排序的基本思想,我们可以发现,快速排序是将待排序的数组分为两个部分,其中一部分包含小于或等于某个特定值的元素,另一部分包含大于或等于该值的元素。然后,对这两个部分分别进行递归排序。
这种划分算法的关键在于选择合适的划分值。如果划分值选取适当,则可以最大程度地减少需要进一步排序的元素数量。快速排序在平均情况下具有O(n log n)的时间复杂度,在最坏情况下具有O(n^2)的时间复杂度。
现在,我们来具体地了解一下如何用JavaScript实现快速排序算法。
JavaScript实现快速排序
首先,我们需要定义一个函数来进行快速排序。这个函数接收一个数组和两个索引作为参数,第一个索引代表要排序的数组的起始位置,第二个索引代表要排序的数组的结束位置。
function quickSort(array, left, right) {
if (left >= right) {
return;
}
let pivot = array[Math.floor((left + right) / 2)];
let i = left;
let j = right;
while (i <= j) {
while (array[i] < pivot) {
i++;
}
while (array[j] > pivot) {
j--;
}
if (i <= j) {
let temp = array[i];
array[i] = array[j];
array[j] = temp;
i++;
j--;
}
}
quickSort(array, left, j);
quickSort(array, i, right);
}
使用快速排序算法
现在,我们可以使用快速排序算法来对一个数组进行排序。例如,我们可以使用以下代码来对一个包含数字的数组进行排序:
let array = [10, 7, 8, 9, 1, 5];
quickSort(array, 0, array.length - 1);
console.log(array); // 输出:[1, 5, 7, 8, 9, 10]
复杂度分析
快速排序的时间复杂度为O(n log n),其中n为要排序的数组的长度。在最坏的情况下,快速排序的时间复杂度为O(n^2)。
快速排序是一个非常高效的排序算法,它经常用于对大型数组进行排序。