最近工作闲暇抽空学习数据结构和算法。本人小菜,只是一步步的打好基础。
看的书是: java数据结构和算法(第二版)
二分查找法原理 :
摘录原书自己稍微改动下 ,书为打印版本 不好直接复制
如同猜数游戏, 游戏中,一个朋友让你猜她想的 1---100之间的数,当你猜了一个数之后,他会告诉你三种选择的一个:大,小,猜中。
为了能够最少的次数猜中,必须从50开始猜,如果小,则下次从50——100之间猜,下次猜75.如果大,则下次猜25, 依此类推
看的书是: java数据结构和算法(第二版)
二分查找法原理 :
摘录原书自己稍微改动下 ,书为打印版本 不好直接复制
如同猜数游戏, 游戏中,一个朋友让你猜她想的 1---100之间的数,当你猜了一个数之后,他会告诉你三种选择的一个:大,小,猜中。
为了能够最少的次数猜中,必须从50开始猜,如果小,则下次从50——100之间猜,下次猜75.如果大,则下次猜25, 依此类推
下面为实现的代码:
public static Integer halfFind(int []a, int num){ int upperBound=a.length-1; int lowBound =0; int curIn=0; while(true){ curIn =(lowBound+upperBound)/2 ; if(lowBound > upperBound){ return -1; //表示数不存在,防止陷入死循环 !!赞 } if(a[curIn]>num){ upperBound =curIn-1; }else if(a[curIn]<num){ lowBound=curIn+1; }else{ return curIn; } }