折半查找法

折半查找法,第1张

1、首先确定整个查找区间的中间位置 mid=( left + right) /2 。

2、用待查关键字值与中间位置的关键字值进行比较;若相等,则查找成功,若大于,则在后(右)半个区域继续进行折半查找,若小于,则在前(左)基李半个区域继续进行折半查找。

3、对确定的缩小区域再按折半公式,重复上述步骤。最后得到结果:要么查找成功,要么查找失败。折半查找的存储结构采用一维数组存放。

C++的语言特点:

1、支持数据封装和数据隐藏

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

在面向对象的程序设计中,将数据和对该数据进行合法 *** 作的函数封装在一起作为一个类的定义。对象被说明为具有一个给定类的变量。每个给定类的对象包含这个类所规定的若干私有成员、公有成员及保护成员。

完好定义的类一旦建立,就可看成完全封装的实体,可以作为一个整体单元使用。类的实际内部工作隐藏起来,使用完好定义的类的用户不需要知道类是如何工作的,只要知道如何使用它即可。

2、支持继承和重用

在C++现有类的基础上可以声明新类型,这就是继承和重用的思想。通过继承和重用可以更有效地组织程序结构,明确类间关系,并且充分利用已有的类来完成更复杂、深入的开发。新定义的类为子类,成为派生类。它可以从父类那里继承所有非私有的属性和方法,作为自己的成员。

3、支持多态性

采用多态性为每个类指定表现行为。多态性形成由父类和它们的子类组成的一个树型结构。在这个树中的每个子类可以接收一个或多个具有相同名字的消息。当一个消息被这个树中一个类的一个对象蠢枣接收时,这个对象动态地决定给予子类对象的消息的某种用法。多态性的这一特性允许使用高级抽象。

继承性和多态性的组合,可以轻易地生成一系列虽然类似但独一无二的对象。由于继承性,这些对象共享许多相似的特征。由于多态性,一个对象可有独特的表现方式,而另一个对象有另一种表现方式。

折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要汪厅找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。 折半查找是一种高效的查找方法。它可以明显减少比较次数,提高查找效率。但是,折半查找的先决条件是查找表中的数据元首陵棚素必须有序。参考程序,希望对你有所帮助者则!

#include<stdio.h>

void main()

{

int a[20],x,i,start,end

printf("input 20 numbers:\n")

for(i=0i<20i++) scanf("%d",&a[i])

printf("please enter the number:\n")

scanf("%d",&x)

for(start=0,end=19start<=end)

{

i=start+(end-start)/2

if (x==a[i])

{

printf("%d",i+1)

getch()

return

}

else if (x>a[i]) end = i-1

else start=i+1

}

}

将明氏闭这一句if(f=0)

printf("Not Found")

改为

if(start>end)

printf("Not Found")

你的程序的问题:激裂如果输入的数据不在数组中,f值也会改变,因为第一次循环的时候if、else if、else必然会执行一个核袜,而其中的每个都会改变f的值。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12497729.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存