標籤:
利用Java實現折半尋找
基本思路:while遞迴迴圈,不斷判斷a[middle]是否等於data,如果等於則跳出迴圈,返回索引值,如果不等,則進行二分處理,直至兩者相等為止;其中通過count計數器記錄尋找次數,當count次數超過20次時視為元素不存在(此處有待最佳化)
package test;/* * 二分法尋找(折半尋找) * TGmoving * */public class halfSearch { public static int HalfSearch(int a[],int data){ int length = a.length; int start = 0; int end = length - 1; int middle = (start + end) / 2; int count = 1; //用於計數,折半尋找次數超過20次仍未找到視為不存在該元素 while(data!=a[middle]){ if(start > end || count > 20){ return -1; }else{ if(data < a[middle]){ end = middle; middle = (start + end) / 2; System.out.println("第"+(count+1)+"次尋找 data < a[middle]: "+ "索引為:"+middle); }else if(data > a[middle]){ start = middle + 1; middle = (start + end ) / 2; System.out.println("第"+(count+1)+"次尋找 data > a[middle]: "+ "索引為:"+middle); } } count++; } count = 0; return middle; } public static void main(String[]Args){ int a[] = {1,2,3,4,5,6,7}; int index = HalfSearch(a, 7); System.out.println("isExist:"+ index ); }}
運行結果展示:
Java實現折半尋找(二分法)