C語言的比較庫函式--qsort
c語言中的庫函式:qsort(int *base,int num,int width,int (*compare)(int *void,int *void));
其中base是排序的一個集合陣列,num是這個陣列元素的個數,width是一個元素的大小,comp是一個比較函式。
比如:對一個長為1000的陣列進行排序時,int a[1000]; 那麼base應為a,num應為 1000,width應為 sizeof(int),comp函式隨自己的命名。
qsort(a,1000,sizeof(int),comp);
其中comp函式應寫為:
1
2
3
4
|
intcomp(constvoid*a,constvoid*b) { return *( int *)a-*( int *)b; } |
上面是由小到大排序,return *(int *)b - *(int *)a; 為由大到小排序。
舉一個例子:對一個結構體中的分數進行排序,結構體的成績是隨機數生成的,學生學號和姓名是從控制檯輸入的。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
/*
測試資料:
001 zhang
002 zhao
003 masan
004 zhaoyun
005 wangqi
006 zhaodan
007 maowanli
008 zhengping
009 bingbing
010 zhahao
*/
struct StuInfo
{
char sno[20];
char name[20];
float score;
};
int p(const void *left, const void *right)
{
struct StuInfo *stu1 = (struct StuInfo *)left;
struct StuInfo *stu2 = (struct StuInfo *)right;
if (stu1->score > stu2->score){
return -1;
}
else{
return 1;
}
}
void structSort()
{
struct StuInfo stu[10], temp;
srand(time(NULL));
int i = 0, j = 0, k = 0;
printf("Please input 10 students' infomation(sno,name):\n");
for (i = 0; i < 10; ++i){
scanf("%s %s",stu[i].sno,stu[i].name);
stu[i].score = rand()%200/2.0;
}
/*庫函式排序*/
qsort(stu, 10, sizeof(struct StuInfo), p);
printf("The student infomation from high to low.\n");
for (i = 0; i < 10; ++i)
printf("%5s,%10s,%5.2f\n",stu[i].sno,stu[i].name,stu[i].score);
}
int main()
{
structSort();
return 0;
}
相關文章
- C語言qsort函式的使用C語言函式
- C語言中qsort函式的用法C語言函式
- C語言函式手冊:c語言庫函式大全|C語言標準函式庫|c語言常用函式查詢C語言函式
- c標準庫中qsort函式用法函式
- tmpnam() - C語言庫函式C語言函式
- tmpfile() - C語言庫函式C語言函式
- c語言函式庫(轉)C語言函式
- C — 快排函式 qsort 的用法函式
- C語言庫函式及示例C語言函式
- C語言標準函式庫C語言函式
- C語言的函式C語言函式
- C語言Math函式庫簡介C語言函式
- c語言快速排序(庫函式使用)C語言排序函式
- qsort函式的用法函式
- C++宏和函式的比較C++函式
- 【C/C++】計時函式比較C++函式
- C語言 execve()函式C語言函式
- C語言常用函式C語言函式
- 對c語言系統庫函式、堆排序、希爾排序、折半插入排序、快速排序消耗時間的比較C語言函式排序
- C語言函式sscanf()的用法C語言函式
- c語言學習--time庫函式詳解C語言函式
- C語言 itoa函式及atoi函式C語言函式
- [ASM C/C++] C語言的main 函式ASMC++C語言AI函式
- C與C++在函式和資料的比較C++函式
- C語言函式呼叫棧C語言函式
- 詳解C語言函式C語言函式
- C語言時間函式C語言函式
- C語言 函式指標C語言函式指標
- 08. C語言函式C語言函式
- C語言基礎函式C語言函式
- 流行語言的比較 (轉)
- k語言和q語言的比較
- Oracle Decode()函式和CASE語句的比較Oracle函式
- C++ priority_queue為例的比較函式C++函式
- 字串比較的常用函式字串函式
- C語言解讀assert函式C語言函式
- C#語言函式遞迴C#函式遞迴
- C語言 sizeof函式詳解C語言函式