求先遞增在遞減陣列中的最大值

2021-08-07 13:48:07 字數 588 閱讀 2756

題目:乙個陣列先從小到大遞增在從大到小遞減,找出陣列的最大值。

思路:可以依次遍歷整個陣列如果array[i]滿足array[i] > array[i-1] && array[i] > array[i+1],那麼i就是最大元素的下標,但是這樣做的時間複雜度為o(n)對於有序陣列我們可以採用二分查詢的方法降低時間複雜度,**實現如下。

實現**

#include

#include

using

namespace

std;

int findmaxnum(vector

array)

else

}return -1;

}int main()

for (size_t j = 15; j > 5; j-= 3)

for (size_t k = 0; k < arr.size(); k++)

cout

<< endl;

int ret = findmaxnum(arr);

cout

<< ret;

return

0;}

C 查詢先非嚴格遞增後非嚴格遞減陣列的最大值

題目 如標題 例子 測試了別的也ok left和right是為了找到他左右兩邊第乙個和它不等的數,注意不要下標溢位 在判斷nums mid 處於非遞減還是非遞增還是最大的時候一定要注意等號,因為可能乙個不小心就跑到break那裡去了。因為在邊界的時候nums left nums mid 或nums ...

陣列中找最大值,求平均分

在乙個陣列中找最大值,用到的函式為max 這個函式很強大.max 找出最大值 eg arr array 張三 50,李四 80,王五 40,趙六 100 max max arr name array search max,arr echo 最高分為 max.姓名為 name 輸出 最高分為 100,...

無序陣列中求最大值最小值

要求比較次數小於2n。最直接的做法,比較次數為2n include using namespace std int main cout min val max val endl return 0 如果要減少比較次數,應該怎麼做呢?當某個元素比較大元素大的時候,就不必再與較小元素比較了 int mai...