快速排序与二分查找程序
下面是系统自带快排和二分查找的函数。qsort和bsearch两个函数可以配合起来用,先排序,在查找,也可以分开使用。qsort在比较两个数大小的时候返回3个值,1、-1、0,改变1和-1的位置,就可以实现从大到小和从小到大排序。
qsort
功能:对数组base中nmemb块大小为size字节的数组快速排序。
参数:base 开始地址,nmenmb 数据块数 size 地址大小 compare 根据此指针指向的函数的返回结果来排序(0,正数和负数)
返回值:无
bsearch
功能:从地址base 开始空间的nmenmb块大小为size字节的数据中,二分查找key指针保存地址空间中的内容
参数:key查找内容的首地址base开始地址nmenmb
//qsort 函数的使用
//bseach函数使用
#include
#include
int c_desc(const void *px,const void *py);
//int c_asc(const void *px,const void *py);
int main(){
intarr[10]={0};
inti=0,j=0,data=0;
int*p=&j;
printf("输入十个数:");
for(i=0;i<10;i++)
scanf("%d",&arr[i]);
printf("输入查找的数:");
scanf("%d",&data);
printf("升序排列:");
qsort(arr,10,sizeof(int),c_desc);
for(i=0;i<10;i++)
printf("%d",arr[i]);
printf("");
// printf("降序排列:");
// qsort(arr,10,sizeof(int),c_asc);
// for(i=0;i<10;i++)
// printf("%d",arr[i]);
p=bsearch(&data,arr,10,sizeof(int),c_desc);
if(p==NULL)
printf("不存在");
else{
printf("存在");
printf("%d在第%d个位置",data,p-arr+1);
}
printf("");
return0;
}
int c_desc(const void *px,const void *py){
const*p1=px;
const*p2=py;
if(*p1==*p2)
return0;
elseif(*p1>*p2)
return1;
else
return-1;
}
#if 0
int c_asc(const void *px,const void *py){
const*p1=px;
const*p2=py;
if(*p1==*p2)
return0;
elseif(*p1>*p2)
return-1;
else
return1;
}
评论