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是指標...