快速排序算法JS實現


function quickSort(arr, low, high){
      let i = low; //哨兵
      let j = high;//哨兵
      let pivot = arr[low];
      if(i >= j) {
        return;
      }
      while(i != j){
        while(i < j && arr[j] >= pivot)
          j--;
        while(i < j && arr[i] <= pivot)
          i++;
        if(i < j) {
          let temp = arr[j];
          arr[j] = arr[i];
          arr[i] = temp;
        }
      }
      arr[low] = arr[i];//每一次排序后將基准點放在正確的位置
      arr[i] = pivot;
      quickSort(arr, low, i -1);
      quickSort(arr, i + 1, high);
}

 

這樣可以少一個變量:

   function quickSort(arr, low, high){
      let i = low;
      let j = high;
      let pivot = arr[low];
      if(i >= j) {
        return;
      }
      while(i != j){
        while(i < j && arr[j] >= pivot)
          j--;
        if(i < j)
          arr[i] = arr[j];
        while(i < j && arr[i] <= pivot)
          i++
        if(i < j)
          arr[j] = arr[i];
      }
      arr[i] = pivot;
      quickSort(arr, low, i -1);
      quickSort(arr, i + 1, high);
   }

快速排序運用了分治法的思想,找到一個基准點,然后將集合分成兩部分,左邊的小於基准點,右邊的大於基准點(從大到小排序的話),這樣就將問題分成了結構類似的兩個小問題,遞歸,直到每個集合里就剩下一個數據。每一次排序肯定會給基准點找到正確的位置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM