A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

C语言排序之折半查找代码实现
  1. #include <stdio.h>
  2. int searchItem(int key ,int arr[] ,int len){//分别是需要找的数,定义一个数组形参,在main中计算出的元素个数
  3.    
  4.     int low =0 ,high = len -1 , mid ;
  5.    
  6.     while (low <= high ) {
  7.         mid =(low+high)/2;
  8.         if (key > arr[mid]) {
  9.             low = mid+1;
  10.                     }
  11.         else if(key <arr[mid]){
  12.             high = mid -1;
  13.         
  14.         }
  15.         else
  16.         {
  17.             return mid;
  18.         }
  19.         
  20.     }
  21.     return -1 ;
  22. }

  23. int main(int argc, const char * argv[]) {
  24.     int a[]={1, 2 ,3 ,12 ,20 ,30 ,32, 34, 39, 76 ,99 };
  25.     int len = sizeof(a)/sizeof(int);
  26.     int result = searchItem(32,a,len);
  27.    
  28.     if (result != -1) {
  29.         printf("a[%d] = %d  \n",result,a[result]);
  30.     }
  31.     else {
  32.         printf(" 未找到! \n");
  33.     }
  34.     printf("\n");
  35.    
  36.     return 0;
  37. }
复制代码



7 个回复

倒序浏览
a[6] = 32  

Program ended with exit code: 0
回复 使用道具 举报
刚学的冒泡排序跟选择排序,抓紧敲一下哦这个
回复 使用道具 举报
二分法要选排序的
回复 使用道具 举报
这个厉害了啊
回复 使用道具 举报
学习了。大神
回复 使用道具 举报
又长只是了!谢谢哦!
回复 使用道具 举报
孙明海 发表于 2015-10-24 22:13
二分法要选排序的

没错。。。。差点忘了,谢谢提醒。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马