1594: A003顺序表:在有序数据中查找
金币值:1
定数:1
时间限制:1.000 s
内存限制:128 M
正确:6
提交:13
正确率:46.15% 命题人:
题目描述
设计并实现如下抽象数据类型,并在main函数测试。
ADT T{
数据对象:D={e1,e2,...,e30|ei均为正整数,其中e1=2}
数据关系:S={<ei,ei+1>|1<i<30,ei+1=ei*2+1}
基本运算:
create(a[]):用D中的元素构建数组a
search(a[],x):利用折半查找的算法从a(a是D中的元素有序形成的数组)中查找某个数x,如果在其中则返回所在的数组下标,否则返回-1
}
ADT T{
数据对象:D={e1,e2,...,e30|ei均为正整数,其中e1=2}
数据关系:S={<ei,ei+1>|1<i<30,ei+1=ei*2+1}
基本运算:
create(a[]):用D中的元素构建数组a
search(a[],x):利用折半查找的算法从a(a是D中的元素有序形成的数组)中查找某个数x,如果在其中则返回所在的数组下标,否则返回-1
}
输入格式
1个整数
输出格式
1个整数
输入样例1 复制
11
输出样例1 复制
2
输入样例2 复制
6291455
输出样例2 复制
21
输入样例3 复制
6291456
输出样例3 复制
-1
提示
二分查找(Binary Search),也称为折半查找,是一种在有序数组中查找特定元素的高效算法。其基本思想是将数组分成两部分,通过比较目标值与中间元素的大小关系,不断缩小查找范围,直到找到目标元素或确定目标元素不存在。详细模拟过程:
1. 初始化
2. 第一次循环
另外一个模拟过程:
1. 初始化
2. 第一次循环
3. 第二次循环
4. 第三次循环
5. 循环结束条件判断