c语言自带的排序与查找
qsort与bsearch
qsort(元素起始地址,元素总数,单个元素的大小,比较函数)
bsearch(key元素地址,元素起始地址,元素总数,单个元素的大小,比较函数)
比较函数:
原型为int comp(const void *a,const void *b)
规定a < b时返回负, a = b时返回0, a > b时返回正
#include <stdlib.h>
#include <stdio.h>
int comp(const void *a,const void *b){
return (*(int *)a - *(int *)b);
}
int main(int argc,char *argv[]){
int arr[]={10,20,3,2,40,24};
int i;
for(i=0;i<6;i++)
printf("%d ",arr[i]);
puts("");
qsort(arr,6,sizeof(int),comp);
for(i=0;i<6;i++)
printf("%d ",arr[i]);
puts("");
int key=10;
void *p=bsearch(&key,arr,6,sizeof(int),comp);
if(p != NULL)
printf("got %d\n",*(int *)p);
return 0;
}