qsort函式的用法 - 菜鳥的日誌 - 網易部落格
2011-03-28 16:11:26| 分類:
預設分類
| 標籤:
|字型大小大中小
訂閱
六類qsort排序方法
前一段時間做題覺得qsort函式很好用,但有時不太會用比如按結構體一級排序、二級排序、字串排序等,故通過查
資料將其整理一番。
以下是其具體分類及用法(若無具體說明是以降序排列):
1、對一維陣列排序:
(element_type是一位陣列中存放的資料型別,可以是char, int, float, double, etc )
int comp(const void *p1,const void *p2 )
int main()
複製**
2、對字串排序:
int comp(const void *p1,const void *p2)
int main()
s[100];
int comp(const void *p1,const void *p2)
qsort(s,100,sizeof(s[0]),comp);
複製**
4、按結構體中多個關鍵字排序(對結構體多級排序)[以二級為例]:
struct node
s[100];
//按照x從小到大排序,當x相等時按y從大到小排序
int comp(const void *p1,const void *p2)
複製**
5、對結構體中字串進行排序:
struct node
s[100];
//按照結構體中字串 str 的字典序排序
int comp(const void *p1,const void *p2)
qsort(s,100,sizeof(s[0],comp);
複製**
6、計算幾何中求凸包的comp
//以下是俺從別人那兒抄來的,暫時還沒用過
int comp(const void *p1,const void *p2)
//重點comp函式,把除了1點外的所有的點旋轉角度排序
複製**
p.s.:qsort函式是ansi c標準中提供的,其宣告在stdlib.h檔案中,是根據二分發寫的,其時間複雜度為n*log(n),其結構為:
void qsort(void *base,size_t nelem,size_t width,int (*comp)(const void *,const void *));
複製**
其中:*base 為要排序的陣列
nelem 為要排序的陣列的長度
width 為陣列元素的大小(一字結為單位)
(* comp)(const void *p1,const void *p2) 為判斷大小函式的指標,這個函式需要自己定義,如果p1>p2,函式返回-1;a
qsort函式的用法
qsort 功 能 使用快速排序例程進行排序 用 法 void qsort void base,int nelem,int width,int fcmp const void const void 各引數 1 待排序陣列首位址 2 陣列中待排序元素數量 3 各元素的占用空間大小 4 指向函式的指標 ...
qsort函式的用法
qsort 功 能 使用快速排序例程進行排序 用 法 void qsort void base,int nelem,int width,int fcmp const void const void 各引數 1 待排序陣列首位址 2 陣列中待排序元素數量 3 各元素的占用空間大小 4 指向函式的指標 ...
qsort函式用法
qsort 功 能 使用快速排序例程進行排序 用 法 void qsort void base,int nelem,int width,int fcmp const void const void 各引數 1 待排序陣列首位址 2 陣列中待排序元素數量 3 各元素的占用空間大小 4 指向函式的指標,...