以一个题目为例,一个整数x是一组按大小顺序排列好的数列中的一个数,我们要找到x在数列中的索引位置。
比如按从小到大排列的数列:
-3,-2,0,4,5,7,12,64
我们要找到数字7的位置,如果是线性查找,时间复杂度是O(n),如果用折半查找的话,时间复杂度是O(log(n)),因为每次折半,计算量少一半,所以取对数。
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
******************************************/
原文地址:http://blog.csdn.net/buptgshengod/article/details/41455009