如何在 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+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告