重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
arr = new ArrayIns(maxSize);//創建ArrayIns類的對象arr for(int j=0;jmaxSize;j++){ long n = (int)(java.lang.Math.random()*99);//產生隨機數。
創新互聯成立與2013年,先為惠民等服務建站,惠民等地企業,進行企業商務咨詢服務。為惠民企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
推薦答案的 code 有問題,并沒有考慮到若待查數的下標是 0 怎么辦?所以若順序表中不存在待查元素 應該 return -1 加上主函數的最后兩行調用兩次查找函數很多余,代碼顯得不夠簡練。
二分查找是一種在有序數組中查找指定元素的算法,它的基本思想是:每次將查找區間縮小一半,直到找到目標元素或者確定目標元素不存在為止。
else if (midVal key)high = mid - 1;elsereturn mid; // key found}return -(low + 1); // key not found.} 可以從源碼中看到,真正的二分查找是在binarySearch0方法中進行的。
很明顯你不能把middle的賦值語句設在循環語句的外面,在二分查找算法中,在執行一次查找后,middle是需要被重新賦值的,你所說的可以正確查找9只是一種巧合而已,因為第一次循環就能把9查出來。
你的程序不對,二分查找 else if(a[mid]searchnum){ right=mid-1 } else left=mid+1;你寫反了。
1、使用Collections類的二分查找之前需要對數據進行排序,否則返回的索引值是不確定的,因此你這里出現了負數。
2、如果非要用二分法輸出所有數組下標的話,很遺憾,實現不了,除非自己覆蓋方法。二分法先排序,可以直接使用Arrays.sort(arr);。調用Arrays.binarySearch(arr,6);//比如要查找6的下標。
3、public static int binarySearch(int[] a,int key)使用二進制搜索算法來搜索指定的 int 型數組,以獲得指定的值。必須在進行此調用之前對數組進行排序(通過上面的 sort 方法)。
什么是二分查找?二分查找也稱折半查找(Binary Search),它是一種效率較高的查找方法。但是,折半查找要求線性表必須采用順序存儲結構,而且表中元素按關鍵字有序排列。
二分查找法也稱折半查找法,是一種在有序數組中查找某一特定元素的搜索算法。
//***二分查找,都注釋了,復制所有代碼,保存成QuickSortApp.java***// class ArrayIns { private long theArray[];private int nElems;//--- public ArrayIns(int max){ //構造方法,初始化成員屬性。