演算法 快速排序的c 實現

2021-09-12 23:05:03 字數 911 閱讀 6320

快速排序的思想:

設定兩個左右哨兵,每次取最左邊的數作為基準數,然後先移動右哨兵,找出第乙個比基準數小的數;之後然後移動左哨兵,找到第乙個比基準數大的數,此時交換兩個哨兵指向的數,然後繼續移動重複上述過程,直到兩個哨兵重合,交換基準數與哨兵指向的數。再接著對基準數的左右兩邊分別重複上述過程(可用遞迴實現)。

具體過程可參考部落格:

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 快速...