快速排序(Quick Sort)是一种常用的排序算法,其原理是选取一个基准值,通过一次排序将待排数组分成两部分,一部分比基准值小,一部分比基准值大,然后再对两部分分别进行快排,直到整个数组有序。

以下是使用 Javascript 实现快排算法的代码及逐行讲解:

function quickSort(arr) {
  if (arr.length <= 1) {
    return arr; // 如果数组长度为 1 或 0,直接返回原数组
  }
  const pivot = arr[0]; // 选取数组第一个元素作为基准值
  const left = []; // 用于存放比基准值小的元素
  const right = []; // 用于存放比基准值大的元素
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] < pivot) {
      left.push(arr[i]); // 将比基准值小的元素放入 left 数组
    } else {
      right.push(arr[i]); // 将比基准值大的元素放入 right 数组
    }
  }
  return quickSort(left).concat(pivot, quickSort(right)); // 递归调用快排,将 left、right 数组与基准值拼接起来
}

第 1 行:定义 quickSort 函数,接受一个数组作为参数

第 2 行:如果数组长度为 1 或 0,直接返回原数组,因为已经有序或无法排序

第 3 行:选取数组第一个元素作为基准值

第 4、5 行:定义 left 和 right 两个数组,用于存放比基准值小的元素和比基准值大的元素

第 6 行:使用 for 循环遍历数组,从第二个元素开始比较

第 7 行:如果当前元素小于基准值,则将其放入 left 数组

第 9 行:如果当前元素大于等于基准值,则将其放入 right 数组

第 11 行:递归调用 quickSort 函数,对 left 数组进行快排,将结果拼接到基准值的左侧

第 11 行:将基准值放在中间

第 11 行:递归调用 quickSort 函数,对 right 数组进行快排,将结果拼接到基准值的右侧

最后返回排序后的数组。

快排算法的时间复杂度为 O(n log n),是一种高效的排序算法。

JavaScript 实现快速排序算法详解

原文地址: https://www.cveoy.top/t/topic/lKOz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录