计算机, 程序设计
二进制搜索 - 最简单的方法之一,找到一个数组中的元素
很多时候,程序员,即使是初学者,面对事实,那就是一组数字,它必须找到一个具体的数字。 正是这种集合称为数组。 并找到它的项目,也有无数种方法。 但他们最简单的可以考虑在合适的二进制搜索。 这是什么方法? 以及如何实现二进制搜索? 帕斯卡尔是这样一个程序的组织最简单的环境,所以我们会利用它来研究。
首先,分析一下,什么是这种方法的优点,更是让我们可以理解,
那么,什么是这种方法的工作原理? 立即将其应该说,二进制搜索的工作原理是不以任何阵列,但只能在一个有序组数字。 在阵列中的每个步骤中取出中间元件(意味着该元素的数量)。 如果所需的 数量大于 平均值,那么所有剩下的,也就是低于平均电池,可以被丢弃,而不是放在那儿。 反之,如果低于这个平均水平 - 这些数字向右之中,你不能搜索。 然后选择一个新的搜索区,其中第一个元素将是整个阵列的中间元素,最后一个和最后的意志。 新字段的平均数量将是所有的段,即,(最后一个元素+整个阵列的中间元件)/ 2的1/4。 再次,进行相同的操作 - 与平均编号的数组的比较。 如果目标值小于平均值,我们拒绝右侧,也做下一个,到现在为止这中间元素不会期望。
当然,最好是看看如何编写二进制搜索的例子。 帕斯卡尔这里将适合任何人 - 版本并不重要。 让我们写一个简单的程序。
它是1以名称“马西沃”的阵列到h,变量指示搜索的下边界,被称为“NIZ”,上限,被称为“verh”,平均搜索术语 - “sredn”; 和所需数量 - “ISK”。
所以,首先我们指定搜索范围的上限和下限:
NIZ:= 1;
verh:= H + 1;
然后组织循环“直到底部低于上限”:
虽然NIZ
在每一步中,我们把段2:
sredn:=(NIZ + verh)DIV 2; {使用函数div,因为没有剩余的鸿沟}
回顾每一次。 因为如果介质所需的项目已经被发现,中断周期:
іfsredn = ISK然后打破;
如果超过所希望的该阵列的中间元件,丢弃左侧,即,平均的上边界指定元素:
如果马西沃[sredn]> ISK然后verh:= sredn;
而如果相反,它使下边界:
否则NIZ:= sredn;
结束;
这一切都将在节目中。
让我们考虑如何将它看二进制方法在实践中。 考虑这个阵列:1,3,5,7,10,12,18,它会寻求数字12。
我们总共有7个元素,因此将第四介质,值7。
1 | 3 | 五 | 7 | 10 | 12 | 18 |
由于超过12,如图7所示,1.3和5的元件,就可以丢弃。 然后,我们已经拿到了4号,4/2无残留为2。于是,新元素将是10的平均水平。
7 | 10 | 12 | 18 |
在这里,中间元素已经是12,这是必需的号码。 在完成此任务 - 12号发现。
Similar articles
Trending Now