#include <stdio.h>
#include <stdlib.h>
#define SIZENUM(arryname) sizeof(arryname)/sizeof(student)
typedef struct{
int studentId;
char studentname[30];
}student;
student Student[]={
{2011,"zhangsan"},
{1988,"lisi"},
{2000,"wangwu"},
{2012,"zhaoliu"},
{2015,"chenyi"},
{2003,"liusan"}
};
int compareID(const void *a,const void *b)
{
int *comp1 = (int *)a;
int *comp2 = (int *)b;
return *comp1 - *comp2;
return 0;
}
int main()
{
int nums = 0;
int num = sizeof(student);
int i = 0;
int key = 2003;
student *studentp;
nums = SIZENUM(Student);
qsort(&Student, nums, sizeof(student),compareID);
for(; i < nums; i++)
{
printf("%d,%s\n",Student[i].studentId, Student[i].studentname);
}
studentp=bsearch(&key, &Student, nums, sizeof(student),compareID);
printf("you searched student name is:%s,%d\n",studentp->studentname,studentp->studentId);
return 0;
}
上面是我写的一个很简单的测试程序。这两个函数最重要的就是compare函数,如果你是整型比较,则其排序和二分查找的Key就是整型,如果比较的是字符串,则key就是字符串。