qsort和bsearch的运用

#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就是字符串。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值