在很多場合,直接使用快速排序的庫函式是很方便的。下面講下vc中庫函式qsort()的用法:
函式原型:
void qsort(void *base,size_t num,size_t width, int (__cdecl *compare )(const void *, const void *) );
第乙個是陣列位址,第二是陣列大小,第三個是陣列中每個元素的位元組數,最後乙個是個函式指標,表示如何比較陣列中的元素。
標頭檔案 :#include
下面分別就int等整數資料,double等浮點資料,結構體和類,按指定方式這四種情況進行講解。
一、對int等整數資料進行排序
//從小到大
int cmp(const void *x, const void *y)
//從大到小
int cmp(const void *x, const void *y)
qsort(a, maxn, sizeof(a[0]), cmp);
二、對double等浮點數進行排序
//從小到大
int cmpdouble(const void *x, const void *y)
qsort(a, n, sizeof(a[0]), cmpdouble);
三 、對結構體,類等複雜資料進行排序
struct student
;先對年齡排序,年齡相同再按姓名排序。
int cmpstudent (const void *x, const void *y)
qsort(a, n, sizeof(a[0]), cmpstudent);
四、 按指定方式進行排序。
如對只有大小寫字母的字串"aajkukdyubcdwyz"進行排序,要求大寫字母在前,小寫字母在後。
int cmp1(const void *x, const void *y)
int main()
排序演算法 快速排序演算法
網際網路的大型公司還在火熱招聘中,參與了一次又一次的筆試,都不通過,我還是太菜!作為程式設計人員,需要邁過去 資料結構與演算法 這個坎,畢竟,筆試不會真的很虧,加油吧,少些水,多點實操。一 快速排序演算法思想 從一組資料中找出乙個基準值,一般是選擇中間值作為基準值,然後從左到右將值與基準值進行比較,...
演算法 排序演算法 快速排序
快速排序是對冒泡法排序的一種改進。快速排序演算法 的基本思想是 將所要進行排序的數分為左右兩個部分,其中一部分的所有資料都比另外一 部分的資料小,然後將所分得的兩部分資料進行同樣的劃分,重複執行以上的劃分操作,直 到所有要進行排序的資料變為有序為止。可能僅根據基本思想對快速排序的認識並不深,接下來以...
排序演算法 快速排序
快速排序使用分治法 divide and conquer 策略來把乙個序列 list 分為兩個子串行 sub lists 步驟為 1.從數列中挑出乙個元素,稱為 基準 pivot 2.重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面 相同的數可以到任一邊 在這個分...