【发布时间】:2021-08-18 00:02:52
【问题描述】:
问题: 设A为n个元素的数组(即A的元素为A[0], ..., A[n-1])。如果以下关于 A[i] 的条件成立,则元素 A[i] 是极端的:
- A[i] 不是 A 的第一个也不是最后一个元素。也就是说,0 A[i+1] 或 A [i-1] > A[i]
编写一个算法来打印给定数组的极值点。如果没有极值点,算法会打印“SORTED”。你是否同意一个数组没有极值点当且仅当它被排序?解释你的答案。
我做了什么:
#include <iostream>
using namespace std;
bool extremePoint(int arr[], int n, int num, int leftNeighbour, int rightNeighbour);
int main()
{
int array[] = { 0, 5, 3, 6, 8, 7, 15, 9 };
int size = sizeof(array) / sizeof(array[0]);
for (int i = 1; i < size - 1; i++) {
// If the current element is a peak
if (extremePoint(array, size, array[i], array[i - 1], array[i + 1]))
{
cout << array[i] << " ";
}
}
return 0;
}
bool extremePoint(int arr[], int size, int num, int leftNeighbour, int rightNeighbour)
{
if (num > leftNeighbour && num > rightNeighbour)
{
return true;
}
if (num < leftNeighbour && num < rightNeighbour)
{
return true;
}
else
{
return false;
}
}
问题:
我已经编写了打印给定数组极值点的算法。
谁能帮我完成这部分:
如果没有极值点,算法会打印“SORTED”。你是否同意一个数组没有极值点当且仅当它被排序?解释你的答案。
【问题讨论】:
-
但是您没有尝试同意或不同意该主张,也没有提供任何理由来捍卫您的立场。所以我们不知道你在这个简单的问题上遇到了什么问题。
-
如果数组已排序,则没有元素有两个相邻的相邻元素,它们都高于或低于该元素。相反,如果一个元素有两个相邻的相邻元素,它们要么更高要么更低,则数组是未排序的。
-
@Willow Hill 如果没有极值点,则并不意味着序列已排序。例如,考虑以下序列 1、2、2、1。
标签: c++ arrays algorithm sorting