//非遞迴實現二分法
public class jianzhi;
int m = find(num , 5) ;
system.out.println(m);
}public static int find(int list , int m )else if(list.length ==1 )else else if (list[mid]m)
}system.out.println("未在陣列中找到數字"+m);
}return -1 ;
}}
//注意: 1.需要把mid放入迴圈中,不能放在迴圈體外,因為每次都要把mid賦值給left或者right如果放在外面每次賦值的數都一樣會死迴圈。
// 2.寫二分法時需要判斷迴圈何時終止,如果每次都是left=mid,right=mid,會導致迴圈無法終止
// ,所以此處用了left=mid+1 right=mid-1 。這樣做還有乙個好處:發現mid不是所要找的數時,就直接捨棄,讓left和right不指向這個節點。
//遞迴實現二分法
public class jianzhi
if(list.length == 1 )
if(begin > end)
int mid = (begin + end) / 2 ;
if(list[mid] == m)else if (list[mid] < m )else if (list[mid] > m )
return -1 ;
}public static void main (string args);
int m = find(num , 1,0,num.length-1) ;
system.out.println(m);
}}
簡單遞迴 二分法查詢
題目描述 設有n個數已經按從大到小的順序排列,現在輸入x,判斷它是否在這n個數中,如果存在則輸出 yes 否則輸出 no 題目分析 該問題屬於資料的查詢問題,資料查詢有多種方法,通常方法是 順序查詢和二分查詢,當n個數排好序時,用二分查詢方法速度大大加快。二分查詢演算法 1 設有n個數,存放在a陣列...
C 二分法查詢,遞迴二分法
用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...
遞迴二分法查詢
二分法使用了折半查詢的思想,不斷的變化,陣列下標的起始位置 begin 和終止位置 end 來進行搜尋。我們使用兩種演算法,解決二分查詢 public class solution system.out.println solution.sort number,0,number.length,56 ...