一半的折叠有什么问题? 半折搜索方法如何工作?

发布于 科学 2024-06-09
4个回答
  1. 匿名用户2024-01-29

    1. 首先,确定整个搜索间隔的中间位置 mid=( left + right) 2 .

    2、将要检查的关键词值与中间位置的关键词值进行比较; 如果相等,则搜索成功,如果大于,则在区域的后(右)半部分继续减半,如果小于,则在区域的前(左)底半部分继续减半。

    3.根据确定的减少面积减半的公式重复上述步骤。 结果是结束:要么搜索成功,要么搜索失败。 半折搜索的存储结构存储在一维数组中。

    C++的语言特点:

    1.支持数据封装和数据隐藏。

    在 C++ 中,类是支持数据封装的工具,对象是数据文件延迟封装的实现。 C++ 通过建立用户定义的类来支持数据封装和数据隐藏。

    在面向对象的编程中,合法操作的数据和函数被封装为类定义。 对象被描述为具有给定类的变量。 每个给定类的对象都包含该类指定的许多私有、公共和受保护成员。

    一旦建立了一个定义良好的类,就可以将其视为一个完全封装的实体,可以用作整体单元。 类的实际内部工作是隐藏的,具有明确定义的类的用户不需要知道类是如何工作的,只需要知道如何使用它。

    2.支持继承和复用。

    新类型可以在 C++ 中的现有类之上声明,这就是继承和重用的思想。 继承和重用可以帮助您更有效地组织程序结构,明确类之间的关系,并充分利用现有类进行更复杂和更深入的开发。 新定义的类是一个子类,并成为派生类。

    它可以从父类继承所有非私有属性和方法作为自己的成员。

    3.支持多态性。

    多态性用于指定每个类的性能行为。 多态性形成一个由父类及其子类组成的树状结构。 此树中的每个子类都可以接收一条或多条具有相同名称的消息。

    当树中某个类的对象接收到消息时,该对象会动态确定给定给子类对象的消息的某种用法。 多态性的这一特性允许使用高级抽象。

    继承和多态性的结合使得生成一系列相似但唯一的对象变得容易。 由于继承,这些对象具有许多相似的特征。 由于多态性,一个对象可以具有独特的行为方式,而另一个对象可以具有另一种行为方式。

  2. 匿名用户2024-01-28

    搜索过程从数组的中间元素开始,如果中间元素恰好是要找到的元素,则结束; 如果某个特定元素大于或小于中间元素,则在数组中大于或小于中间元素的一半中找到该元素,并且比较从中间元素开始时开始。 如果数组在某个步骤中为空,则找不到它。 这种搜索算法在每次比较时将搜索范围缩小到一半。

    折半搜索方法是一种更有效的搜索方法。 其优点是比较成功的公告数量少,搜索速度快,平均性能好; 缺点是要求要查找的表是有序表,插入和删除困难。 因此,半折搜索方法适用于查找不经常变化的有序列表并经常查找它们。

    “半查找方法”的步骤说明:

    1. 首先,确定整个搜索间隔的中间位置 mid=( left + right) 2 .

    2)将待检查关键字的值与中间位置的关键字值进行比较;如果相等,则搜索成功; 如果它更大,则搜索将继续在后(右)半区域减半; 如果小于此值,则在该区域的前(左)半部分继续进行半折搜索。

    3.根据确定的减少面积减半的公式重复上述步骤。 结果是结束:要么搜索成功,要么搜索失败。 半折搜索的存储结构存储在一维数组中。

    以上内容参考:百科全书-半搜索方法。

  3. 匿名用户2024-01-27

    半折搜索法是一种比较有效的搜索方法,假设有五个整数 a0 a4 按从小到大的顺序排列,要找到的数字是 x,其基本思想是:

    设搜索数据范围的下限为l=0,上限为h=4,求中点m=(l+h)2,将x与中点元素am进行比较,如果x等于am,即找到它,停止搜索。

    否则,如果 x 大于 am,则替换下限 l=m+1 并继续在下半部分搜索。

    如果 x 小于 am,则更改上限 h=m-1,在前半部分继续搜索,并重复上一个过程,直到找到它或 l>h。

    如果 l>h,则表示没有这样的数字,打印找不到信息,程序结束。

    这种方法不断将搜索范围缩小一半,因此查找明无梦的效率更高。

    半折搜索方法的优缺点。

    Bentley 在他的著作《编写正确的程序》中写道,90% 的计算机科学家无法在 2 小时内编写出完全正确的二进制搜索算法。

    问题的关键是准确制定每个搜索范围的边界和终止条件的确定,并正确总结奇偶激励电桥的各种情况。

    减半搜索方法的优点是对比次数少,搜索速度快,平均性能好。

    缺点是要求要查找的表是有序表,插入和删除困难,因此减半搜索方式适用于查找不经常更改的频繁排序表。

  4. 匿名用户2024-01-26

    半折检查和搜索可以在二叉树的帮助下进行描述。

    为了简化讨论,我们把树近似为一个完整的二叉树,让二叉树的高度为 h(h>1)。

    然后,根据二叉树的性质,它旁边有一个最大数量的节点 n=2 h-1,则 h=log2(n+1) (2 是基数)。 那么二叉树j层的节点数为:2(j-1)。

    假设每个元素的找到概率相等,那么,pi = 1 n(pi 是第 i 个节点的找到概率)。

    则平均查找长度为 1 n*(1*2 0+2*2 1+3*2 2+......j*2^(j-1))

    平均搜索长度如下:((n+1) n ) log2(n+1)-1(其中对数中的 2 为底:即以 2 为底数 (n+1)) 的对数)。

    注意:当 n 较大时,可以近似为 log2(n+1)-1

    搜索过程从数组的中间元素开始,如果中间元素恰好是要找到的元素,则结束; 如果特定元素大于或小于中间元素,则在数组中大于或小于中间元素的一半中找到该元素。

相关回答
7个回答2024-06-09

顺序查找方法。

假设:num(i) 是学生的学号,nam$(i) 是姓名,num 是搜索对象。 >>>More

10个回答2024-06-09

#include

void main() >>>More

5个回答2024-06-09

#include

int main() >>>More

15个回答2024-06-09

1.查询日期必须在一个橡木月内选择; 2、可以查询当月和近半年的明细列表,如果查询列表超过七个月(含当月),大银行无法查询。 2、可登录易浪生活电信手持营业厅查询通话记录,选择“营业厅”,点击“账户详情”,点击“列表查询”,选择要查询的日期,即可查询近6个月(含当月)的通话记录。 要了解有关服务优惠的更多信息,请单击下面的“****”客户服务 219 为您解答。

9个回答2024-06-09

你需要看看是否满足了定位条件,如果满足了,就可以找出对方的位置。 定位需要满足以下条件: >>>More