一维数组和循环结合加最大值与最小值对换
时间: 2024-12-19 11:18:20 浏览: 54
在一维数组中,我们可以使用循环结构(如for或while循环)遍历数组中的每个元素,同时跟踪当前找到的最大值(max)和最小值(min)。以下是一个简单的C++代码示例,展示了如何用这种方法交换数组中的最大值和最小值:
```cpp
#include <iostream>
// 定义一个通用的整数类型
using Integer = int;
// 函数模板,用于找出并交换数组中的最大值和最小值
template<typename T>
void swapMaxMin(T arr[], size_t size) {
if (size <= 1) return; // 如果数组只有一个元素或为空,无需操作
T max_value = arr[0]; // 假设第一个元素为最大值
T min_value = arr[0]; // 同理,假设第一个元素为最小值
for (size_t i = 1; i < size; i++) {
if (arr[i] > max_value) {
max_value = arr[i];
}
if (arr[i] < min_value) {
min_value = arr[i];
}
}
// 交换最大值和最小值
if (max_value != min_value) {
arr[0] = max_value;
arr[size - 1] = min_value;
} else {
std::cout << "所有元素相等,无法交换。\n";
}
}
int main() {
const int array[] = {5, 3, 9, 1, 7};
const size_t array_size = sizeof(array) / sizeof(array[0]);
std::cout << "Original array:\n";
for (auto num : array) {
std::cout << num << " ";
}
std::cout << "\n";
swapMaxMin(array, array_size);
std::cout << "After swapping max and min:\n";
for (auto num : array) {
std::cout << num << " ";
}
return 0;
}
```
在这个例子中,`swapMaxMin`函数接受一个整型数组和它的大小作为参数,然后遍历数组找到最大值和最小值,最后将它们互换。
阅读全文