首页 > 试题广场 >

在一个数据集合中找到特定数据的工作被称为查找。特别的,当一个

[问答题]

在一个数据集合中找到特定数据的工作被称为查找。特别的,当一个数据集合经过整理成为有序集合时,我们有一种高效的查找方法:二分查找。请参考下面两种对二分查找算法的描述,选择其中一种加以实现。查找工作的函数声明为:

int BSearch(double a[],int s,int e,double item);

查找算法一

1) i 标记集合的左端 s, i=s; j 标记集合的右端 e, j=e;mid 标记为集合的中间位置,即 mid=(i+j)/2

2) 若中间位置元素 >item ,则重新标记 i 为中间位置的右侧相邻位置 mid+1

若中间位置元素 <item ,则重新标记 j 为中间位置的左侧相邻位置 mid-1

若中间位置元素 =item ,则找到这个特定元素。返回该元素在集合中的位置表示查找成功。

重复这个步骤。

3) 正常的,判断直到 i j 之间没有数据 或者 找到元素为止。

4) 如果查找工作到 i j 之间没有数据,那么说明该元素在集合中不存在,返回 -1 表示查找失败。

查找判断算法二:

1) i 标记集合的左端 s, i=s;j 标记集合的右端 e, j=e; mid 标记为集合的中间位置 , mid=(i+j)/2

2) 查找的工作是递归的,因为

若中间位置元素 >item ,则返回在使用 mid+1 当左端的数据集合中查找 item 的结果;

若中间位置元素 <item ,则返回在使用 mid -1 当右端的数据集合中查找 item 的结果;

若中间位置元素 =item ,则找到这个特定元素。返回该元素在集合中的位置表示查找成功。

3 )若 s e 之间没有数据,则返回 -1 表示查找失败。

发表于 2017-05-07 10:36:50 回复(0)