C 實現旋轉陣列的二分查詢

2022-10-03 12:12:08 字數 1284 閱讀 1230

題目要求:

旋轉陣列,如是的乙個旋轉,要求利用二分查詢查詢裡面的數。

這是一道很有意思的題目,容易考慮不周全。這裡給出如下解決方法:

#include

using namespace std;

int sequentialsearch(int *array, int size, int destvalue)

} return pos;

}int normalbinarysearch(int *array, int leftpos, int rightpos, int destvalue)

int left = leftpos;

int right = rightpos;

while (left <= right)

else

if (array[mid] < destvalue)

else

}return destpos;

}int rotatebinarysearch(int *array, int size, int destvalue)

int leftpos = 0;

int rightpos = size - 1;

while (leftpos <= rightpos)

int midpos = (rightpos - leftpos) / 2 + leftpos;

if (array[leftpos] == array[midpos] && array[midpos] == array[rightpos])

if (array[midpos] == destvalue)

if (array[midpos] >= array[leftpos])

else

}else

else

}} return destpos;

}int main()

; //int array = ;

//int array = ;

//int array = ;

//int array = ;

//int array = ;

int array = ;

const int size = sizeof array / sizeof *array;

for (int i = 0; iwww.cppcns.com <= size; i++)

for (int i = size; i >= 0; i--) }

本文標題: c++實現旋轉陣列的二分查詢

本文位址: /ruanjian/c/113773.html

旋轉陣列的二分查詢

1 什麼是旋轉陣列 旋轉陣列是將乙個有序陣列的前若干個數旋轉到陣列末尾,例如陣列a 5 那麼陣列b 5 為陣列a的乙個旋轉陣列 2 旋轉陣列的二分查詢之找到給定key 對於給定乙個數key,如何從旋轉陣列中找到key的位置呢?由於旋轉陣列部分有序,故可以利用二分查詢思想來設計演算法,從而達到logn...

旋轉陣列的二分查詢

1.問題描述 已知有序陣列a n 從中間某個位置k k未知,k 1表示整個陣列有序 分開,然後將前後兩部分互換,得到新的陣列,在該新陣列的查詢元素x。如 a 從k 4分開,得到新陣列a 一次二分查詢 二分查詢演算法有兩個關鍵點 1 陣列有序 2 根據當前區間的中間元素與x的大小關係,確定下次二分查詢...

二分搜尋 旋轉陣列

以二分搜尋為基本思路 簡要來說 nums 0 nums mid 0 mid不包含旋轉 且nums 0 target nums mid 時 high 向前規約 nums mid nums 0 0 mid包含旋轉 target nums mid nums 0 時向前規約 target 在旋轉位置到 mi...