通過縮小查詢範圍,找出由小到大排好序的陣列中間值,判斷與目標值大小關係,進一步縮小範圍,最終得到要查詢的目標值所在的下標。
public static int binarysearch(int arr,int target)
else if(arr[mid]>target)
else
}return -1;
}
通過最大最小值均值與目標值大小關係,得出目標值的範圍,將新的範圍再次進行函式迴圈,遞迴運算,最終得到目標值所在的下標。
public static int binarysearch(int find,int arr,int left,int right)
if(arr[right] == find)
int mid = (left + right)/2;
if(arr[mid] == find)else if(arr[mid] > find)else
}return -1;
}
二分查詢 遞迴與非遞迴
最近做了一道題目,在弄清原理之後發現怎麼也過不去,找了幾個小時的bug,結果問題就出現在二分查詢的知識點上,暑假是有接觸過二分的題目,應該是沒有完全理解才會在昨天的那道題上碰釘子,藉此寫一下對二分的理解來鞏固鞏固以前的知識。一談起查詢,最先想到的無非是遍歷整組資料,複雜度為o n 但是對於一組有規律...
二分查詢(遞迴 非遞迴)
二分查詢是一種查詢效率非常高的查詢演算法。又稱折半查詢。起初在資料結構中學習遞迴時實現二分查詢,實際上不用遞迴也可以實現,畢竟遞迴是需要開闢額外的空間的來輔助查詢。本文就介紹兩種方法 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。使用條件 查詢序...
二分查詢(遞迴與非遞迴方式)
test public void testbinarysearch 非遞迴實現,返回對應的序號 system.out.println binarysearch arr,5 遞迴實現,返回對應的序號 system.out.println binsearch arr,5 非遞迴實現,返回對應的序號 au...