您的位置:首页 > 编程语言 > C语言/C++

二分查找C语言实现

2012-09-28 15:29 387 查看
二分查找的简单实现

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 20
#define N_RAND 200
int cmp( const void *a , const void *b ){
return *(int *)a > *(int *)b ? 1 : -1;
}

//返回在数组中位置
int B_Search(int *a, int p, int q, int key){
while(p<=q){
int r=(p+q)/2;
if(a[r]==key) return r;
else if(a[r] > key) q=r-1;
else p=r+1;
}
return -1;
}

int main(){
int i, a
;
srand((unsigned)time(NULL));
for(i=0;i<N;i++){
a[i]=rand()%N_RAND;
printf("%d ",a[i]);
}
printf("\n");
qsort(a,N,sizeof(int),cmp);
for(i=0;i<N;i++){
printf("%d ",a[i]);
}
printf("\n");
for(i=0;i<N;i++){
printf("元素位置为%d \n",B_Search(a,0,N-1,a[i]));
}
system("pause");
return 0;
}


相关链接:

http://baike.baidu.com/view/610605.htm

http://www.cnblogs.com/xiaosuo/archive/2010/04/07/1687231.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: