【算法数据结构Java实现】折半查找

来源:互联网 发布:淘宝怎么买百度云资源 编辑:程序博客网 时间:2024/05/17 01:37

1.背景

       以一个题目为例,一个整数x是一组按大小顺序排列好的数列中的一个数,我们要找到x在数列中的索引位置。

比如按从小到大排列的数列:

-3,-2,0,4,5,7,12,64

我们要找到数字7的位置,如果是线性查找,时间复杂度是O(n),如果用折半查找的话,时间复杂度是O(log(n)),因为每次折半,计算量少一半,所以取对数。


2.代码

package Algorithm_analysis;public class Bisearch {static int[] array={-3,-2,0,4,5,7,12,64}; public static void main(String args[]){   int left=0;   int right=array.length;   int center=0;   int k=7;     while(left<=right){  center=(right+left)/2;   if ((array[center]-k)==0){  System.out.print(center);  break;   }   else{            if((array[center]-k)>0){                 right=center;            }                 else{                 left=center;                 }                 }                 }   }}//输出结果7

/********************************

* 本文来自博客  “李博Garvin“

* 转载请标明出处:http://blog.csdn.net/buptgshengod

******************************************/



1 0
原创粉丝点击