一个递归方法,实现有序数组的二分查找算法

Posted Jachyn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个递归方法,实现有序数组的二分查找算法相关的知识,希望对你有一定的参考价值。

点击蓝字 关注作者


一个递归方法,实现有序数组的二分查找算法


这个世界并不在乎你的自尊,只在乎你做出来的成绩,然后再去强调你的感受。——比尔盖茨
关键字:递归、有序数组、二分查找

小伙伴们可以先了解一下

流程图

一个递归方法,实现有序数组的二分查找算法


一个递归方法,实现有序数组的二分查找算法


奉上源码

一个递归方法,实现有序数组的二分查找算法

package Binary_Search;

import java.util.Scanner;

public class Binary_Search


{

    public static int binarySearch(int[] list, int low, int high, int key)

    {

        if(list==null)

        {   

            return -1;

        }

        int middle = (low+high)/2;

        if(low<=high)

        {

            if(list[middle]==key)

            {

                return middle;

            }

      

            else if(list[low]<=list[high])

                {

                    if(list[middle]<key)    

                    {

                        return binarySearch(list,middle+1,high,key);

                    }

                    else

                    {        

                        return binarySearch(list,low,middle-1,key);

                    }

                }

                else

                {

                    if(list[middle]<key) 

                    {

                        return binarySearch(list,low,middle-1,key);

                    }

                    else

                    {

                        return binarySearch(list,middle+1,high,key);

                    }

                }

            }

        return -1;

        }


    public static void main(String[] args)

    {

    int[]a= {9,8,3,2,1,0};

    int i;

    System.out.println("请输入要查找的数字;");

    Scanner in =new Scanner(System.in);

    int key=in.nextInt();

    int subscript=binarySearch(a,0,a.length-1,key);

    if(subscript==-1)

    System.out.println("数组中无此数,查找失败");

    else

    System.out.println("该数的下标是:"+subscript);

    }

}



▲左右滑动查看完整代码 

运行结果

一个递归方法,实现有序数组的二分查找算法

温馨提示



   小伙伴可以用for循环

测一下验证代码的正确性


Jachyn

专注生活


●  与你分享 IT|数学|英语|摄影 小知识 ●


以上是关于一个递归方法,实现有序数组的二分查找算法的主要内容,如果未能解决你的问题,请参考以下文章

二分查找算法

算法-二分查找1

虽然简单,但是面试时却容易写错的一个算法:二分查找(迭代和递归2种实现方式)

算法递归算法 ② ( 使用递归实现二分法 | if else 编码优化 )

Go-二分查找算法

java实现二分查找(迭代与递归)