⾸先说说⼆分查法。
⼆分查法是对⼀组有序的数字中进⾏查,传递相应的数据,进⾏⽐较查到与原数据相同的数据,查到了返回1,失败返回对应的数组下标。 采⽤⾮递归⽅式完成⼆分查法。代码如下所⽰。
[java]
1. /*
2. * ⾮递归⼆分查算法
3. * 参数:整型数组,需要⽐较的数.
4. */
5. public static int binarySearch(Integer[]srcArray,int des){
7. int low=0;
春天的童话
8. //最⾼位置.数组长度-1,因为下标是从0开始的.
9. int high=srcArray.length-1;
10. //当low"指针"和high不重复的时候.
11. while(low<=high){
12. //中间位置计算,low+ 最⾼位置减去最低位置,右移⼀位,相当于除2.也可以⽤(high+low)/2
汉尼拔前传
13. int middle=low+((high-low)>>1);
14. //与最中间的数字进⾏判断,是否相等,相等的话就返回对应的数组下标.
15. if(des==srcArray[middle]){
16. return middle;
17. //如果⼩于的话则移动最⾼层的"指针"
18. }else if(des<srcArray[middle]){
红外光通信装置19. high=middle-1;
20. //移动最低的"指针"
21. }else{
22. low=middle+1;
23. }
24. }
25. return-1;
26. }
27.
28. }
采⽤递归⽅式完成⼆分查算法。代码如下所⽰。
[java]
1. /**
2. * 递归⽅法实现⼆分查法.
3. * @param Array数组
4. * @param low 数组第⼀位置
5. * @param high 最⾼
vist6. * @param key 要查的值.
7. * @return 返回值.
8. */
钋-2109. int BinSearch(int Array[],int low,int high,int key)
奥克洛铀矿
10. {
11. if (low<=high)
12. {
13. int mid = (low+high)/2;
14. if(key == Array[mid])
15. return mid;
16. else if(key<Array[mid])
17. //移动low和high
18. return BinSearch(Array,low,mid-1,key);
19. else if(key>Array[mid])
20. return BinSearch(Array,mid+1,high,key);
21. }
22. else
23. return -1;
24. }
递归思想会被经常⽤到,更加突出了编程解决问题的⾼效。