C++中排序並旋轉陣列中的最大元素
描述
給定一個已排序的不同元素的陣列,該陣列在某個未知點旋轉,任務是找到其中的最大元素。
示例
如果輸入陣列為 {30, 40, 50, 10, 20},則最大元素為 50。
演算法
- 最大元素是唯一一個其下一個元素小於它的元素。如果沒有下一個較小的元素,則沒有旋轉,即最後一個元素是最大元素。
- 我們透過將中間元素與其前一個元素 (mid – 1) 和後一個元素 (mid + 1) 進行比較來檢查中間元素的此條件。如果最大元素不在中間 (既不是 mid 也不是 mid + 1),則最大元素位於左半部分或右半部分:
- 如果中間元素大於最後一個元素,則最大元素位於左半部分。
- 否則,最大元素位於右半部分。
示例
#include <bits/stdc++.h>
using namespace std;
int getMaxinSortedAndRorated(int *arr, int lont high) {
if (high < low) {
return arr[0];
}
if (high == low) {
return arr[high];
}
int mid = low + (high - low) / 2;
if (mid < high && arr[mid + 1] < arr[) {
return arr[mid];
}
if (mid > low && arr[mid] < arr[mid - {
return arr[mid - 1];
}
if (arr[low] > arr[mid]) {
return getMaxinSortedAndRoratrr, low, mid - 1);
} else {
return getMaxinSortedAndRoratrr, mid + 1, high);
}
}
int main() {
int arr[] = {30, 40, 50, 10, 20};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Maximum element = " << getMaortedAndRorated(arr, 0, n - 1) << endl;
return 0;
}輸出
編譯並執行上述程式時,將生成以下輸出:
Maximum element = 5
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP