首页 > 编程知识 正文

二分法查找数组中元素位置,冒泡法排序c语言

时间:2023-05-04 15:59:41 阅读:119175 作者:697

什么是二分法检索?

二分法搜索是指通过循环二等分来搜索想要的数量和数据。

那么,怎么写这样的代码呢?

首先,将一系列数组存储在变量中,将其作为已知数据。 例如,如果将1到10之间的数字保存到变量中,则可以写为:

而且,要知道检索数据是用下标检索的。

此时,可以定义变量。 通过控制变量来控制下标的转换,例如可以定义如下:

因为里面有10个数字,第一个数字的下标是1,第十个数字的下标正好是9,所以定义为left=0; right=9。

然后用二分法缩小范围,先将末尾的加法除以2,将结果定义为中间变量。 例如:

通过观察中间变量和输入数字的位置关系,决定中间变量是代入left还是代入right。 此时,可以使用if语句进行判定。

另外,代入left时,请记住应该先加1再代入left。 因为刚才判定了中间变量和输入数字的位置关系,所以可以确认输入数字中不包含中间变量。 因此,通过将中间变量加1,可以在不违反所需结果的情况下进一步缩小范围,提高代码的执行速度。

可以说同样的话。 如果给right赋值的话,应该减去1再给right赋值。

例如:

最后,因为要合并代码,所以用二分法查找下标的完整代码:

对此,还可以进一步推广此代码。 例如,可以在循环中将数字的个数存储在数组中。 这样,存储的数字不限于10个数字,而是普及到尽可能多的数字。 寻找下标也可以推广到使用这个下标来找到这个数组中的数字。

但是,这样展开的话,就会出现right必须知道数组中最后一个数字的后缀才能完成的问题。 如果展开到数组中,有很多数字很难在很短的时间内确定其后缀,right应该如何赋值呢?

如上图所示,通过将数组的全长除以各数字的长度,可以知道总共有多少个数字。 然后可以为right赋值。

注意分配right时,数字总是大于下标1,必须减去1后再分配。

这样,就可以完成二分法探索的全过程。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。