摘要:寫二分法時需要判斷循環何時終止,如果每次都是,,會導致循環無法終止,所以此處用了。遞歸實現二分法目標數組,目標值,左邊界,右邊界輸入的數組是
//非遞歸實現二分法
public class Jianzhi{ public static void main (String[] args){ int[] num = {1,2,3,4,5,100}; int m = find(num , 5) ; System.out.println(m); } public static int find(int[] list , int m ){ if(list == null ){ System.out.println("輸入的數組長度出錯。") ; }else if(list.length ==1 ){ //如果傳入的數組只有一個數字 int n = list[0]==m?0:-1 ; return n ; }else { int left = 0 ; int right = list.length-1 ; while(left <= right){ int mid = (left + right)/ 2 ; if(list[mid]==m){ return mid ; }else if (list[mid]m){ right = mid - 1 ; } } 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{ // (目標數組,目標值,左邊界,右邊界) public static int find(int[] list , int m ,int begin , int end) { if(list == null){ System.out.println("輸入的數組是null"); return -1 ; } if(list.length == 1 ){ return list[0]==m?0:-1 ; } if(begin > end){ return -1 ; } int mid = (begin + end) / 2 ; if(list[mid] == m){ return mid ; }else if (list[mid] < m ){ return find(list , m ,mid+1 , end ); }else if (list[mid] > m ){ return find(list , m , begin , mid-1 ); } return -1 ; } public static void main (String[] args){ int[] num = {1,2,3,4,5,100}; int m = find(num , 1,0,num.length-1) ; System.out.println(m); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/71375.html
摘要:二分查找的定義二分查找也稱折半查找,它是一種效率較高的查找方法。但是,折半查找要求線性表必須采用順序存儲結構,而且表中元素按關鍵字有序排列。算法的要求從上面的定義我們可以知道,滿足該算法的要求必須如下兩點必須采用順序存儲結構。 showImg(https://segmentfault.com/img/remote/1460000016466416?w=800&h=191); 二分查找的...
摘要:數據項是數據的不可分割的最小單位。數據項是對客觀事物某一方面特性的數據描述。數據對象是性質相同的數據元素的集合,是數據的一個子集。數據的邏輯結構數據元素之間的相互關系稱為邏輯結構。 項目地址 https://github.com/m9rco/algo... 每周最少一更,求出題,求虐待 At least once a week, ask for problems and abuse 簡...
摘要:數據項是數據的不可分割的最小單位。數據項是對客觀事物某一方面特性的數據描述。數據對象是性質相同的數據元素的集合,是數據的一個子集。數據的邏輯結構數據元素之間的相互關系稱為邏輯結構。 項目地址 https://github.com/m9rco/algo... 每周最少一更,求出題,求虐待 At least once a week, ask for problems and abuse 簡...
摘要:數據項是數據的不可分割的最小單位。數據項是對客觀事物某一方面特性的數據描述。數據對象是性質相同的數據元素的集合,是數據的一個子集。數據的邏輯結構數據元素之間的相互關系稱為邏輯結構。 項目地址 https://github.com/m9rco/algo... 每周最少一更,求出題,求虐待 At least once a week, ask for problems and abuse 簡...
閱讀 2467·2021-09-28 09:36
閱讀 3610·2021-09-22 15:41
閱讀 4413·2021-09-04 16:45
閱讀 2002·2019-08-30 15:55
閱讀 2852·2019-08-30 13:49
閱讀 831·2019-08-29 16:34
閱讀 2378·2019-08-29 12:57
閱讀 1688·2019-08-26 18:42