|
发表于 2022-11-16 18:47:16
|
显示全部楼层
本楼为最佳答案
- #include <stdio.h>
- int find(int d[] , int n , int k)
- {
- int i , r , left , mid , right ;
- for(r = -1 , left = 0 , right = n - 1 ; left <= right ;) {
- mid = left + (right - left) / 2 ;
- if(d[mid] == k) {
- r = mid ;
- break ;
- } else {
- if(k > d[mid]) left = mid + 1 ;
- else right = mid - 1 ;
- }
- }
- return r ;
- }
- int main(void)
- {
- int a[100] = {0} , i , k , n , m ;
- scanf("%d" , & n) ;
- for(i = 0 ; i < n ; i ++) scanf("%d" , & a[i]) ;
- scanf("%d" , & m) ;
- if((k = find(a , n , m)) >= 0) printf("%d\n" , k) ;
- else printf("null\n") ;
- }
复制代码
编译运行实况:
- D:\[00.Exerciese.2022]\C>g++ -o x x.c
- D:\[00.Exerciese.2022]\C>x
- 15
- 1 4 9 13 21 34 55 89 144 233 377 570 671 703 812
- 34
- 5
- D:\[00.Exerciese.2022]\C>
复制代码 |
|