交换最小值和最大值
时间: 2025-05-19 14:22:43 浏览: 13
### 如何在编程中交换数组或列表的最小值和最大值
在编程中,可以通过遍历数组找到其最大值和最小值对应的索引位置,然后分别将其与数组的第一个元素和最后一个元素进行交换。以下是具体的实现方法:
#### 方法描述
通过两次循环或者一次循环完成最大值和最小值的查找过程,并记录它们的位置。随后利用临时变量 `temp` 完成数值之间的互换操作。
#### C语言实现示例
以下是一个完整的C语言程序,用于交换数组中的最大值和最小值到指定位置(首尾)[^2]:
```c
#include <stdio.h>
#define N 10 // 数组大小定义为常量N
int main() {
int arr[N] = {4, 3, 1, 7, 8, 6, 0, 2, 9, 5}; // 初始化数组
// 打印原始数组
printf("交换前数组元素的排列为:");
for (int i = 0; i < N; i++) {
printf("%d ", arr[i]);
}
int maxIndex = 0; // 记录最大值索引
int minIndex = 0; // 记录最小值索引
// 查找最大值和最小值及其对应索引
for (int i = 1; i < N; i++) {
if (arr[maxIndex] < arr[i]) {
maxIndex = i;
}
if (arr[minIndex] > arr[i]) {
minIndex = i;
}
}
// 将最大值与第一个元素交换
int temp = arr[0];
arr[0] = arr[maxIndex];
arr[maxIndex] = temp;
// 将最小值与最后一个元素交换
temp = arr[N - 1];
arr[N - 1] = arr[minIndex];
arr[minIndex] = temp;
// 打印交换后的数组
printf("\n交换后数组元素的排列为:");
for (int i = 0; i < N; i++) {
printf("%d ", arr[i]);
}
}
```
上述代码实现了输入一个固定长度的整型数组,输出该数组经过处理之后的结果,其中最大值被移动到了第一位,而最小值则移至最后一位[^2]。
#### Python实现示例
如果使用Python,则可以更加简洁地表达这一逻辑:
```python
def swap_min_max(arr):
# 获取最大值和最小值的索引
max_index = arr.index(max(arr))
min_index = arr.index(min(arr))
# 交换最大值和第一个元素
arr[0], arr[max_index] = arr[max_index], arr[0]
# 交换最小值和最后一个元素
arr[-1], arr[min_index] = arr[min_index], arr[-1]
return arr
# 测试数据
array = [4, 3, 1, 7, 8, 6, 0, 2, 9, 5]
print("交换前:", array)
result = swap_min_max(array[:])
print("交换后:", result)
```
此段脚本同样完成了相同的功能,即定位并调整给定列表内的极值位置[^3]。
阅读全文
相关推荐














