linux c 库函数 qsort 和bsearch

函数原型:void qsort(void *base, size_t nmemb, size_t size,

                  int(*compar)(const void *,const void *));

base:要查找数组的首地址

nmemb:数组元素个数

size:元素大小

compare:回调函数,指明两个元素比较的方法。

例子:

#include <stdio.h>

 

int compar( const void* a, const void *b )//以升序排序

{

   return *(int*)a-*(int*)b;

}

 

int main( int argc, char* argv[] )

{

   int a[] = {10,2,6,1,8,5,7,3,4,18,20,24,-1};

   qsort(a,sizeof(a)/sizeof(int),sizeof(int),compar);

   int i;

   

   for( i=0; i< sizeof(a)/sizeof(a[0]) ;i++)

   {  

       printf("%d:%d\n",i,a[i]);

   }  

}

 

 

bsearch:

函数原型:void*bsearch(const void *key, const void *base, size_t nmemb,

              size_t size, int (*compar)(constvoid *, const void *));

key:搜索关键字

base:数组起始地址

nmemb:数组大小

size:数组元素大小

compare:回调函数,用于比较两个关键字

例子:

#include <stdio.h>

#include <stdlib.h>

int compar( const void *a1,const void *a2 )

{

    return*((int *)a1) - *((int*)a2);

}

int main( int argc,char* argv[] )

{

    if( argc!= 2 )

    {

        printf("error\n");

        return-1;

    }

    int a[] ={1,2,3,4,5,6,7,8};

    int i = atoi(argv[1]);

    int *position=NULL;

    position= bsearch( &i,a,sizeof(a)/sizeof(a[0]),sizeof(a[0]),compar);

    if(position == NULL )

    {

        printf("cannot find the key\n");

    }

    else

    {

        printf("Findthe key:%d,in position:%d\n",i,position-a);

    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值