迴圈有序陣列二分查詢

2021-10-01 16:58:07 字數 495 閱讀 9040

演算法描述,乙個有序的陣列,從開始到中間擷取一段陣列放到陣列的尾部,這個陣列會變成迴圈有序的陣列,在這個迴圈有序的陣列中進行二分查詢

例如   1,2,3,4,5,6,7,8,9    擷取前4位放到尾部會變成5,6,7,8,9,1,2,3,4 變成迴圈有序的陣列

演算法實現:採用二分查詢的方式,獲取中間的乙個陣列,然後看一下轉折點在中間數的左邊還是右邊,然後進行分情況討論

具體實現**如下:

public static void main(string args)

/*** 迴圈有序的陣列進行二分查詢

* @param a

*/public static int find(int a, int n, int target)

//轉折點在右半邊

if(a[left] <= a[mid])

else

}else //轉折點在左半邊

else }}

return -1;

}

迴圈有序陣列的二分查詢

問題 請實現以下函式int indexof int array int key 給定乙個迴圈有序的陣列,請在這個陣列中找到指定元素,找到的話返回下標,沒找到返回 1。解決 首先,使用二分查詢找到陣列的 臨界點 臨界點滿足兩個情況 array left array mid array left arr...

二分查詢有序陣列

對於乙個有序字串陣列,用二分法查詢某一字串是否存在於該字串陣列中。函式原型為 bool binarysearch const vector array,const string target 注意這裡的有序指的是字典序,如字串陣列 a,ab,ac,bc,cd,d 就是有序字串陣列,而 a,b,ab ...

二分查詢(基於有序陣列)

採用一對平行的陣列,乙個儲存鍵乙個儲存值 實現的核心是rank 方法,它返回表中小於給定鍵的鍵的數量。二分查詢法 將被查詢的鍵和子陣列的中間鍵比較。如果被查詢的鍵小於中間鍵,就在左子陣列中繼續查詢,如果大於就在右子陣列中繼續查詢,否則中間鍵就是我們要找的鍵。實現 rank 採用了二分查詢法,rank...