实现折半查找算法的非递归和递归算法
折半查找算法,也被称为二分查找算法,是一种高效的查找算法。
它要求查找的数据结构必须是有序的,因为它利用了有序的特性来减少查找次数。
实现折半查找算法的方式有两种:非递归和递归。
非递归算法的实现过程:
1. 定义一个起始位置 start 和结束位置 end。
起始位置始终为0,结束位置始终为查找范围的长度减一。
2. 在 while 循环中,每次计算中间位置 mid,如果要查找的值等于中间位置的值,则直接返回 mid。
3. 如果要查找的值小于中间位置的值,则更新结束位置为 mid - 1;如果要查找的值大于中间位置的值,则更新起始位置为 mid + 1。
4. 如果起始位置大于结束位置,则说明要查找的值不存在于数据结构中,返回 -1。
递归算法的实现过程:
1. 定义一个递归函数,传入起始位置 start、结束位置 end 和要查找的值 target。
2. 计算中间位置 mid,并将其与目标值进行比较。
如果相等,则返回 mid。
3. 如果目标值小于中间位置的值,则递归查找左半部分,即调用函数并传入起始位置 start 和结束位置 mid - 1。
4. 如果目标值大于中间位置的值,则递归查找右半部分,即调
用函数并传入起始位置 mid + 1 和结束位置 end。
5. 如果起始位置大于结束位置,则说明要查找的值不存在于数据结构中,返回 -1。
总之,折半查找算法是一种非常高效的查找算法,可以使查找时间降低到对数级别。
而且,其实现方式也非常灵活,可以采用非递归或递归方式实现。