小星星

别点

第2关:实践题 查找-进阶(二分查找)

本关任务:编写一个程序,能在数组中查找某个特定的数据元素。与第一关不同的是,数组中的元素是从小到大有序存放的.

测试说明

平台会对你编写的代码进行测试:

测试输入: 66

预期输出:1

测试输入:123

预期输出:3

测试输入:-90

预期输出:0

测试输入:900

预期输出:0

测试输入:189

预期输出:3

提示:能在数组中查找某个特定的数据元素,无论是否找到,都将返回数据比较的次数。你的查找算法的复杂度要满足O(logn)

result

全部代码

#include < stdio.h >
int find_pos(int data[] ,int n, int key)
{//在数组data中查找给定数据key,n是数组中数据元素的个数,返回值是数据元素比较的次数.
    
 /*------------begin-----------------*/
    if(data[0]>key || data[n-1]data[mid])
            low=mid+1;
        else if(key==data[mid])
        {
            break;
        }
    }
    return count;
 /*------------end-----------------*/
}

int main(void)
{
	int a[]={-1,15,66,99,122,189};
	int x;
	scanf("%d",&x);
	//此处填写代码,调用find_pos,在a数组中查找给定数据x的位置,并输出函数返回值
  	/*------------begin-----------------*/
	printf("%d",find_pos(a,6,x));
 	/*------------end-----------------*/    
	return 1;
}

			

测试结果

已通过平台4个测试集合