qsort函式簡介
標頭檔案為:#include
功 能: 使用快速排序例程進行排序
用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const
void *));
引數:1 待排序陣列首位址 2 陣列中待排序元素數量 3 各元素的占用空間大小 4 指向函式的指
針,用於確定排序的順序
1.對乙個長為1000的陣列進行排序時,int a[1000]; 那麼base應為a,num應為 1000,width應為
sizeof(int),comp函式隨自己的命名。
qsort(a,1000,sizeof(int ),comp);
其中comp函式應寫為:
int comp(const void *a,const void *b)
上面是由小到大排序,return *(int *)b-*(int *)a; 為由大到小排序。
是對乙個二維陣列的進行排序:
int a[1000][4]; 其中按照a[0]的大小進行乙個整體的排序,其中a[1]必須和a[0]一起移動交換
。qsort(a,1000,sizeof(int)*4,comp);
int comp(const void *a,const void *b)
char a[1000][20];
qsort(a,1000,sizeof(char)*20,comp);
int comp(const void *a,const void *b )
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從大到小排序(這是3跟4的區別)
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點外的所有的點旋轉角度排序
6.6、計算幾何中求凸包的comp
int comp(const void *p1,const void *p2)//重點comp函式,把除了1點外的所有的點旋轉角度排序
2011-8-3 20:25
提問者: nino先生
|瀏覽次數:278次
我來幫他解答
2011-8-3 20:49
滿意回答
樓上寫的是algorithm裡面sort的寫法qsort不能寫成return a < b;
int cmp(const void* a, const void* b)
如果返回負數,說明a排在b前面
如果返回正數,說明a排在b後面
如果返回0,說明a和b無先後關係
所以如果要從小到大排
則返回 *((int*)a) - *((int*)b)
如果從大到小
則返回 *((int*)b) - *((int*)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 用於確定排序的順序 排序方法有很多種,選擇排序,氣泡排序,歸併排序,快速排序等。看名字都知道快速排序 ...
qsort函式用法
用 法 void qsort void base,int nelem,int width,int fcmp const void const void 各引數 1 待排序陣列首位址 2 陣列中待排序元素數量 3 各元素的占用空間大小 4 指向函式的指標 用於確定排序的順序 排序方法有很多種,選擇排序...