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 — 快排函式 qsort 的用法函式
- C語言庫函式及示例C語言函式
- C語言的函式C語言函式
- c語言快速排序(庫函式使用)C語言排序函式
- C++宏和函式的比較C++函式
- C語言常用函式C語言函式
- C語言 execve()函式C語言函式
- C語言函式sscanf()的用法C語言函式
- C與C++在函式和資料的比較C++函式
- 08. C語言函式C語言函式
- C語言 函式指標C語言函式指標
- C語言基礎函式C語言函式
- C語言函式呼叫棧C語言函式
- C++ priority_queue為例的比較函式C++函式
- 字串比較的常用函式字串函式
- C語言解讀assert函式C語言函式
- C#語言函式遞迴C#函式遞迴
- c/c++ 標準庫 set 自定義關鍵字型別與比較函式C++型別函式
- c語言函式指標的定義C語言函式指標
- c語言與字串相關的庫函式的模擬實現C語言字串函式
- excel 字元比較函式Excel字元函式
- C語言函式指標與回撥用函式C語言函式指標
- 【C語言】函式的概念和函式的呼叫(引數傳遞)C語言函式
- C語言巨集和函式淺析C語言函式
- C 語言回撥函式詳解函式
- c語言學習筆記===函式C語言筆記函式
- C語言有關函式淺析C語言函式
- c語言是如何處理函式呼叫的?C語言函式
- C語言相關的基礎字串函式C語言字串函式
- c語言 - 模仿qsort的功能實現一個通用的氣泡排序C語言排序
- Python、 JAVA這種語言比較火,是不是C語言就不行了PythonJavaC語言
- 【C語言】常用的字串函式及相關函式的自我實現C語言字串函式
- C 語言實現泛型 swap 函式泛型函式
- JavaScript - 函式 setTimeout 和 setInterval 的比較JavaScript函式
- 包含min函式的棧(劍指offer)---C語言函式C語言
- c語言獲取陣列長度的函式C語言陣列函式
- C語言-字串函式的實現(五)之strstrC語言字串函式