C 實現快速排序

2021-10-06 01:57:45 字數 792 閱讀 9295

一直都在csdn看別人寫的文章,動手寫寫以後還能找出來看看。小白,有段時間沒寫**,手有點生疏。若有什麼錯誤,請多多指教。

最近在看《演算法導論》,看到快速排序,決定寫一寫。

這是最壞情況下的**,每次都選最後乙個元素作為主元。

#include

using

namespace std;

void

exchange

(int

*a,int i,

int j)

intpartition

(int

*a,int p,

int r)

}exchange

(a,i+

1,r)

;//主元放到"小於和大於的中間"

return i+1;

//返回主元的下標

}void

quicksort

(int

*a,int p,

int r)

}int

main()

;int n=

sizeof

(a)/

sizeof

(int);

quicksort

(a,0

,n);

//呼叫快速排序

排序 快速排序,C 實現

本文 的github位址 基本思想 快速排序 是對 氣泡排序 的改進。基本原理 基於分治法,在待排線性表中取乙個元素pivot作為樞軸值,通過一趟排序將待排線性表劃分為獨立的兩部分,第一部分的所有元素小於pivot,第二部分的所有元素大於等於pivot,pivot位於其最終位置。遞迴對兩個子表做快速...

快速排序 c 實現

快速排序思想 基於分治策略,對氣泡排序的一種改進。對於要排序的乙個序列,從中選一值進行排序,將其放入到正確的位置position。然後以position為界,對左右兩部分再做排序。直到劃分的長度為1。步驟 設有一待排序的序列 1.分別設定low hight指向序列的最左端 最右端 從序列中選乙個進行...

快速排序(C 實現)

include using namespace std void swap int a,int b int sort int begin,int end if beginwhile beginif begin return begin void quicksort int begin,int end...