二分搜索

作者: taylar_where | 来源:发表于2019-05-24 09:28 被阅读0次

3.二分查找(Binary Search)——在线性数组中找特定值的算法,每个步骤去掉一半不符合要求的数据。

Technique for finding a particular value in a linear array, by ruling out halfof the data at each step.

二分查找是也称作折半查找,是一种效率较高的查找,但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

二分查找图

程序代码如下:

package thirty_two.A_Search;

import java.util.Scanner;

/**

* 二分查找

* @author 

* 给定一个有序的数组,实用二分查找寻找数字P是否存在数组中

*

*/

public class BinarySearch {

            public static void main(String[] args) {

                    Scanner in=new Scanner(System.in); 

                     System.out.println("请输入数组的长度N");

                     int n=in.nextInt();

                      int[] array=new int[n];

                      System.out.println("请输入长度为"+n+"的整型数组:");

                    for(int i=0;i<n;i++) {

                                array[i]=in.nextInt();

                        }

                    System.out.println("请输入需要寻找的数字P:");

                    int P=in.nextInt();

                    System.out.println(binarySearch(array,P,0,array.length-1));

}

public static boolean binarySearch(int[] array,int P,int head,int tail) {

                while(head<=tail) {

                        int mid=(tail+head)/2;

                        if(tail-head<=1) {

                        if(array[head]==P) {

                                System.out.println("index="+head);

                                return true;

                        }else if(array[tail]==P){

                                 System.out.println("index="+head);

                                return true;

                        }else {

                                return false;

                        }

        }

        if(array[mid]==P) {

                System.out.println("index="+mid);

                return true;

        }

        if(array[mid]>P) {

                tail=mid;

        }

        if(array[mid]<P) {

                head=mid;

        }

    }

return false;

}

}

相关文章

  • Algorithm进阶计划 -- 二分搜索

    二分搜索二分搜索模板二分搜索运用 1. 二分搜索模板 二分搜索(二分查找)也称折半查找(Binary Search...

  • 算法-二分搜索算法

    算法:二分搜索算法(折半查找算法)时间复杂度: 二分搜索算法概述 二分搜索算法伪代码 二分搜索算法实现 二分搜索算...

  • 搜索算法

    顺序搜索 二分搜索

  • 二分搜索(Binary_Search)

    1. 二分搜索是什么? 二分搜索(英语:binary search),也叫折半搜索(英语:half-interva...

  • AVL 树

    一:什么是 AVL 树? 在我的上一篇文章《二分搜索树与二分查找法》中,详细介绍了二分搜索树这种数据结构。二分搜索...

  • 二分算法-LeetCode 69

    二分算法-LeetCode 69 二分算法 二分算法模板, 二分搜索即搜索一个数,如果存在,返回其索引,否则返回-...

  • Pearls9. 代码调优

    [TOC] 问题:在包含1000个整数的表中进行二分搜索: 二分搜索的调优 说明:在二分搜索中通常不需要代码调优 ...

  • Pearls4 编写正确的程序

    4.1 二分搜索

  • 手敲数据结构——使用二分搜索树实现Set

    关于实现二分搜索树,可以看前面的文章 手敲数据结构——二分搜索树

  • 分治算法(二分搜索)

    每日一言 : 当我们真正热爱这世界时,我们才真正生活在这世上。——泰戈尔 二分搜索 什么是二分搜索 二分搜索又叫二...

网友评论

    本文标题:二分搜索

    本文链接:https://www.haomeiwen.com/subject/erpwzqtx.html