快速排序演算法實現(遞迴實現 棧實現)

2021-08-30 02:29:34 字數 588 閱讀 7472

基本思想:

選擇乙個基準元素,比如選擇最後乙個元素,通過一趟掃瞄,將待排序列分成兩部分,一部分比基準元素小,一部分大於等於基準元素,此時基準元素在其排好序後的正確位置,又稱為軸位置,此位置的元素確定後不再參與排序,然後再用同樣的方法遞迴地排序劃分的兩部分。

分析:快速排序是不穩定的排序。

快速排序的時間複雜度為o(nlogn)。

當n較大時使用快排比較好,當序列基本有序時用快排反而不好。

**實現:

遞迴實現

int quicksort(int arr,int left,int right)

if(left非遞迴實現:

int quicksortnonrecursive(int arr,int left,int right)

//通過棧實現

stackstack=new stack<>();

stack.push(left);

stack.push(right);

while(!stack.isempty())

if(middle+1}

return arr;

}

快速排序的非遞迴實現(棧)

快速排序非遞迴基本思想 將每一段的頭和尾放在棧中,在逐步出棧。首先先建乙個棧或者呼叫stl 標準模板庫 中 棧函式。在標頭檔案中。include include include using namespace std define size 20 typedef int datatype typed...

快速排序 遞迴實現

快速排序演算法 用到了 分治法 遞迴演算法 package com.xiahui public class quicksort quicksort quicksort new quicksort quicksort.quicksort a,0,6 for int i 0 i a.length i p...

快速排序 遞迴實現

快速排序演算法 用到了 分治法 遞迴演算法 package com.xiahui public class quicksort quicksort quicksort new quicksort quicksort.quicksort a,0,6 for int i 0 i a.length i p...