二分法查找的C语言实现:

#include <stdio.h> int binSearch(int, int, int); main() { int i, n = 10, x = 7; //这里假设把数组a[]定义为a[n],是错误的,不能定义变长数组。 int a[10]; printf("Please enter your num:/n"); //从标准输入给数组赋值的唯一方法:用for循环 for(i=0;i<n;i++) { scanf("%d",&a[i]); } printf("The %d can be found in the arr, it is %dth of the arr/n", x, binSearch(x,a,n)); } /*第一种方法,推断都在循环内*/ int binSearch(int x, int a[], int n) { int low, high, mid; low = 0; high = n-1; //注意,这里必须用<=, 用<不正确,一直返回-1 while(low <= high) { mid = (low + high) / 2; if(x < a[mid]) high = mid - 1; else if(x > a[mid]) low = mid + 1; else return mid; } return -1; } /*在循环内运行一次測试的方法*/ /*int binSearch(int x, int a[], int n) { int low, high, mid; low = 0; high = n-1; mid = (low + high) / 2; while((low <= high)&&(a[mid]!=x)) { if(x < a[mid]) high = mid -1; else low = mid + 1; mid = (low + high) / 2; } if(a[mid] == x) return mid; else return -1; } */

 

时间复杂度   log2n

转载于:https://www.cnblogs.com/lcchuguo/p/4493603.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值