快速排序的思想:
設定兩個左右哨兵,每次取最左邊的數作為基準數,然後先移動右哨兵,找出第乙個比基準數小的數;之後然後移動左哨兵,找到第乙個比基準數大的數,此時交換兩個哨兵指向的數,然後繼續移動重複上述過程,直到兩個哨兵重合,交換基準數與哨兵指向的數。再接著對基準數的左右兩邊分別重複上述過程(可用遞迴實現)。
具體過程可參考部落格:
c++實現:
#include
using namespace std;
intquicksort
(int left,
int right,
int a)
int i = left;
int j = right;
while
(i < j)
while
(a[i]
<= a[left]
&& j > i)
if(i != j)
}int temp1 = a[i]
; a[i]
= a[left]
; a[left]
= temp1;
quicksort
(left, i -
1, a)
;quicksort
(i +
1, right, a)
;return1;
}int
main
(int argc,
char
const
*ar**)
;quicksort(0
,10, test)
;for
(int i =
0; i <
10; i++
)return0;
}
快速排序演算法的C 實現
但是當輸入有相同元素時,輸出就會有問題!該怎麼解決呢?或者更通用一點的 是什麼樣的呢?下次再編輯!隨機快速排序 include include include using namespace std void quicksort int arr,int num1,int num2 對陣列arr nu...
C 實現的快速排序演算法
c 快速排序講解 演算法 首先說說快速排序,現在網上很多快速排序的解釋,我也談談我自己對快速排序的了解和看法。快速排序是一種很高效的排序演算法,它的核心思想是 在要排序的陣列中,先選定乙個數 一般是第乙個數或者最後乙個數,就叫它x 以x為標準,進行一次排序,排序的結果是以x為中間值,比它大或小的值都...
快速排序演算法 c 實現
namespace backpackproblem backpack bp new backpack profit int start 0 int end profit.length 1 bp.quicksort profit,start,end bp.print class backpack 快速...