vlambda博客
学习文章列表

Scratch二分查找算法

    二分查找(Binary Search)也称折半查找,是一种在有序数组中查找某一特定元素的查找算法。

    查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则查找过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种查找算法每一次比较都使查找范围缩小一半。

注意:折半查找的前提条件是需要有序表顺序存储

    通常,我们看到的是python、C语言等来实现二分查找。在图形化编程中,同样可以实现二分查找算法。本次分享将介绍使用函数实现二分查找算法的方法。

    首先创建一个带有两个参数的“二分查找”函数,一个参数L来表示最小索引,一个参数H表示最大索引,并进行定义。


    然后创建一个变量M表示中间索引(相对的),设置M的值为L与H和的一半,并进行向下取整。其中L的初始值为0,H的初始值为有序列表的长度。


Scratch二分查找算法

接下来,便是对列表元素与要查询的元素进行比较:

若L>H,即有序列表的前半段和后半段均没有想要查找的元素,则表示查找失败。


Scratch二分查找算法

若有序列表的第M项大于要查找的元素,则向列表的前半段继续查找,即需要在函数体内调用自己,并设置H=M-1。


Scratch二分查找算法

若有序列表的第M项小于要查找的元素,则向列表的后半段继续查找,即需要函数体内调用自己,并设置L=M+1


Scratch二分查找算法

若有序列表的第M项刚好等于要查找的元素,则表示成功,可以返回该元素所在的索引。



    最后,调用该“二分查找”的函数