如何在 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>