21xrx.com
2024-12-22 19:55:37 Sunday
登录
文章检索 我的文章 写文章
JavaScript实现快速排序
2023-06-08 14:35:50 深夜i     --     --
JavaScript 算法 排序

快速排序是一种基于比较的、分治的排序算法。相比于其他排序算法,快速排序的时间复杂度为O(n log n),且实现简单,因此被广泛使用。

实现原理

快速排序的核心思想是从数列中选取一个基准数,将小于基准数的放在其左边,大于基准数的放在右边,然后再对左右两个子序列分别进行递归。其基本步骤如下:

从数列中选择一个基准数。

将所有小于基准数的元素移到基准数的左边,所有大于基准数的元素移到基准数的右边。

对基准数左右的两个子序列进行递归,重复上述两个步骤。

代码实现

我们可以用JavaScript实现快速排序算法。下面是代码实现的基本步骤:

定义一个函数quickSort(),它接受一个数组作为参数。

如果传入的数组长度小于等于1,直接返回该数组。

选取一个基准数:可以选取任何一个元素,这里我们取第一个元素。

循环数组,将小于基准数的元素放在左边,大于基准数的元素放在右边。(具体实现可参考代码注释)

对左右两边的子序列分别进行递归。

将左右两边的子序列与基准数合并并返回。

下面是完整代码实现:

function quickSort(arr) {

 if (arr.length <= 1)

   return arr;

 

 const pivot = arr[0];

 const left = [];

 const right = [];

 for (let i = 1; i < arr.length; i++) {

   if (arr[i] < pivot) {

     left.push(arr[i]);

   } else {

     right.push(arr[i]);

   }

 }

 return [...quickSort(left), pivot, ...quickSort(right)];

}

代码解释

在上述代码中,首先判断数组长度是否小于等于1,如果是返回该数组。否则,选取第一个元素作为基准数,然后循环数组,将小于基准数的元素放在左边,大于基准数的元素放在右边。使用递归分别对左右两边的子序列进行快速排序。最后,将左右两边的子序列与基准数合并返回。

结语

快速排序是一种高效的排序算法,它的时间复杂度为O(n log n),实现也比较简单。我们可以使用JavaScript来实现快速排序,加深对快速排序的理解。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复