二分查找

  1 /* FILE: p198_binarySearch.c
  2  * DATE: 20170114
  3  * --------------
  4  */
  5 
  6 #include <stdio.h>
  7 
  8 int binarySearch(int *array, int value, int length)
  9 {
 10         int left = 0;
 11         int right = length - 1;
 12         int mid;
 13         while(left <= right)
 14         {
 15                 mid = (left + right) / 2;
 16                 if(value > array[mid])
 17                 // 小心:此处要加1。否则当value不存在时,无法跳出循环
 18                         left = mid + 1;
 19                 else if(value < array[mid])
 20                 // 小心:此处要减1
 21                         right = mid - 1;
 22                 else
 23                         return mid;
 24         }
 25         return -1;
 26 }
 27 
 28 void insert_sort(int *array, int length)
 29 {
 30         int i;
 31         for(i=1; i<length; i++)
 32         {
 33                 int j = i;
 34                 int temp = array[i];
 35                 while((j>0) && (temp<array[j-1]))
 36                 {
 37                         array[j] = array[j-1];
 38                         j--;
 39                 }
 40                 array[j] = temp;
 41         }
 42 }
 43 
 44 void print(int *array, int length)
 45 {
 46         int i;
 47         for(i=0; i<length; i++)
 48                 printf("%d ", array[i]);
 49         printf("\n");
 50 }
 51 
 52 int main(int argc, char *argv[])
 53 {
 54         int a[] = {2,6,4,8,2,10,0};
 55         int len = sizeof(a) / sizeof(a[0]);
 56         print(a, len);
 57         insert_sort(a, len);
 58         print(a, len);
 59         printf("%d\n", binarySearch(a, 2, len));
 60         printf("%d\n", binarySearch(a, 100, len));
 61         return 0;
 62 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值