如何在 JavaScript 中实现快速排序?


在本文中,我们将讨论如何使用合适的示例在 JavaScript 中实现快速排序。

快速排序

快速排序是一种分治算法,类似于归并排序。在快速排序中,我们选择一个基准元素,并围绕基准元素划分数组。选择基准元素的方法有很多。

  • 始终选择第一个元素作为基准元素。

  • 始终选择最后一个元素作为基准元素。(在下面的程序中实现)

  • 随机选择一个元素作为基准元素

  • 选择中间元素作为基准元素。

快速排序中的主要过程是分区。分区的目的是,给定一个数组,并将数组中的一个元素 x 视为基准元素。将基准元素保持在已排序数组中的正确位置。然后将所有小于基准元素的元素放在左侧,大于基准元素的元素放在右侧。

输入和输出场景

考虑一个数组,其中包含一些以随机顺序排列且未排序的元素,我们可以通过执行归并排序来对这些元素进行排序。让我们检查下面的场景。

Input = [0, 10, 4, 1, 3];
Output = 0, 1, 3, 4, 10

简单的分区和快速排序函数

选择一个元素 x 作为基准。小于基准元素的元素将位于基准元素的左侧,大于基准元素的元素将位于基准元素的右侧。

快速排序是如何工作的?

要了解快速排序是如何工作的,让我们假设一个数组 arr=[7, 4, 10, 6, 3, 9]

  • 索引为 0 1 2 3 4 5

  • Low = 0,High = 5,基准元素 = 9

  • 最初,较小元素的索引 i = -1

  • 通过将第一个元素与基准元素进行比较,7 小于 9。因此,7 被放置在索引 0 处,i 移动到 i=0。

  • 现在,让我们将 4 与基准元素进行比较,4 小于 9,因此 i 将位于 i=1 处,4 将被放置在那里。

  • 将 10 与基准进行比较,10 大于 9。i 不会递增(i = 1)。

  • 让我们转到下一个元素 6,由于 6 小于基准,它将位于 i=2 处。9 将被移动到 i = 3。

  • 将 3 与基准进行比较,3 小于 10。因此 i 将递增并变为 i=3,10 和 3 将被交换。

  • 现在将 10 与基准进行比较。由于 10 大于基准元素,它将被放置在 i=4 处,10 将位于 i=5 处。

分区

现在,让我们围绕基准元素执行分区。

  • 基准 = 9。

  • 在 9 处执行分区,小于 9 的元素应在左侧,大于 9 的元素应在右侧。

  • 然后将最后一个元素视为基准,并继续执行分区,如下面的图所示。

现在,让我们在下面的程序中实现上述快速排序过程。

示例

在下面的示例中,我们将最后一个元素视为基准 -

<!DOCTYPE html>
<html>
<head>
   <title>Implementation of Quick Sort</title>
</head>
<body>
   <script>
      function Quicksort(array){
         if (array.length < 2){
            return array;
         }
         let pivot_element = array[array.length - 1]
         let left_sub_array = [];
         let right_sub_array = [];
         for (let i = 0; i < array.length - 1; i++){
            if (array[i] < pivot_element) {
               left_sub_array.push(array[i])
            } else {
               right_sub_array.push(array[i])
            }
         }
         return [...Quicksort(left_sub_array), pivot_element, ...Quicksort(right_sub_array)];
      }
      const array = [0, 10, 4, 1, 3];
      document.write(Quicksort(array));
   </script>
</body>
</html>

更新于: 2022-12-19

3K+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告