在线编译器 C

#include <stdio.h> void swap_min_max(int *a, int n) { int min_idx = 0,max_idx = 0; for (int i = 1; i < n; i++) { if (a[i] < a[min_idx]) { min_idx = i; } if (a[i] > a[max_idx]) { max_idx = i; } } int t = a[min_idx]; a[min_idx] = a[max_idx]; a[max_idx] = t; }
这段代码定义了一个函数 `swap_min_max`,它接收一个整型数组和数组长度,找到数组中的最小值和最大值,然后交换它们的位置。代码逻辑基本正确,但有一个潜在问题需要注意。

- 当数组中有多个相同的最小值或最大值时,你的代码只交换了第一次出现的最小值和最大值。如果最小值和最大值相同(比如所有元素都相等),交换操作实际上没有改变数组,这可能是符合预期的。
- 考虑一种特殊情况:如果最小值或最大值有多个相同值,并且你希望交换的是第一个最小值与最后一个最大值(或其他特定规则),你的代码目前只记录第一次出现的索引。但题目没有明确要求,所以这不一定算错误。