C語言快排qsort簡單小結

2021-10-04 09:46:04 字數 1664 閱讀 4489

1。qsort,即快速排序,包含在或中,

函式有四個引數,沒有返回值下面是乙個典型的寫法:

qsort(s,n,sizeof(s[0]),cmp);

其中,s是需要排序的陣列名,也可以理解成開始位址,

因為你如果只需要對陣列的部分排序的話,s可以寫成&s的形式的

第二個引數n是參與排序的元素個數,第三個引數是單個元素的大小,

通常我們用sizeof()來獲取大小,因為它足夠放心絕對無毒^_^

而且很多時候我們需要對結構體進行排序的你很難把握它的大小的~

最後乙個引數,也就是我今天對著愣了很久的東東了什麼鳥東西嘛,

搞得忒神密-_-!!!!

因為是比較函式我比較習慣用cmp

cmp的典型定義是

intcmp(constvoid*a,constvoid*b);

其中返回值必須是int,兩個引數的型別必須都是constvoid*,這樣你可以對他進行強制轉換成任何其他型別

有點想c#中的box哈~~

假設是對int排序的話,如果是公升序,那麼就是如果a比b大cmp返回乙個正值,小則負值,相等返回0

當然當你對具體的陣列進行排序的話cmp裡面就要做具體的處

2。七種常見排法!!!

一、對int型別陣列排序

intnum[100];

sample:

intcmp(constvoid*a,constvoid*b)

qsort(num,100,sizeof(num[0]),cmp);

二、對char型別陣列排序(同int型別)

charword[100];

sample:

intcmp(constvoid*a,constvoid*b)

qsort(word,100,sizeof(word[0]),cmp);

三、對double型別陣列排序(特別要注意)

doublein[100];

intcmp(constvoid*a,constvoid*b)

qsort(in,100,sizeof(in[0]),cmp);

四、對結構體一級排序

structin

s[100]

//按照data的值從小到大將結構體排序,關於結構體內的排序關鍵資料data的型別可以很多種,參考上面的例子寫

intcmp(constvoid*a,constvoid*b)

qsort(s,100,sizeof(s[0]),cmp);

五、對結構體二級排序

structin

s[100];

//按照x從小到大排序,當x相等時按照y從大到小排序

intcmp(constvoid*a,constvoid*b)

qsort(s,100,sizeof(s[0]),cmp);

六、對字串進行排序

structin

s[100];

//按照結構體中字串str的字典順序排序

intcmp(constvoid*a,constvoid*b)

qsort(s,100,sizeof(s[0]),cmp);

七、計算幾何中求凸包的cmp

intcmp(constvoid*a,constvoid*b)//重點cmp函式,把除了1點外的所有點,旋轉角度排序

氣泡排序:

for(j=1;j<=n;j++)}}

C語言小結

第一章概述 1 c語言的特點 語言簡潔 緊湊,使用方便 靈活。共有 個關鍵字,種控制語句。運算子豐富,公有 種運算子。資料結構豐富,資料型別有 整型 實型 字元型 陣列 指標 結構體 共用體等。具有結構化的控制語句 如if else while do while switch for 語法限制不太嚴...

C語言程式簡單例子

實驗二參 1 輸入兩個整型數字,輸出他們的和。include main 2 輸入兩個實型數,輸出他們的和與乘積。include main 3 求方程的根 設 4ac 0 altimg 188a110eb3d1e2af311acb07b46f4a3c.png w 98 h 25 其中a,b,c的值由鍵...

C語言指標小結

輸出結果同上。指標變數位址加1 inti,pa,a pa a for i 0 i 9 i 輸出結果同上。2 陣列名與指標的區別 陣列名是指標常量而指標是指標變數,舉乙個例子。inti,pa,a pa a for i 0 i 9 i 輸出結果同上。這裡如果將pa換成a,那麼編譯就會出錯。原因pa是指標...