交换最小值和最大值pta
时间: 2023-08-10 17:02:53 浏览: 172
这个问题是一个经典的编程问题。通常的解法是遍历整个数组,同时记录最小值和最大值出现的索引,然后交换这两个索引对应的数组元素。
以下是一个示例代码:
```C++
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int a[n];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
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;
}
}
swap(a[min_idx], a[max_idx]);
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
return 0;
}
```
这个程序首先读入数组的大小和元素,然后遍历整个数组找到最小值和最大值的索引,最后交换这两个索引对应的元素。最后输出交换后的数组。
相关问题
交换最大值与最小值pta
以下是两种交换最大值与最小值的方法:
1.先找到最大值和最小值的下标,然后交换对应的数
```python
num_list = list(map(int, input().split())) # 输入一系列整数
max_index = num_list.index(max(num_list)) # 找到最大值的下标
min_index = num_list.index(min(num_list)) # 找到最小值的下标
num_list[0], num_list[min_index] = num_list[min_index], num_list[0] # 将最小值与第一个数交换
num_list[-1], num_list[max_index] = num_list[max_index], num_list[-1] # 将最大值与最后一个数交换
print(' '.join(map(str, num_list))) # 输出交换后的序列
```
2.先将整个序列排序,然后将第一个数和最小值交换,将最后一个数和最大值交换
```python
num_list = list(map(int, input().split())) # 输入一系列整数
sorted_list = sorted(num_list) # 将整个序列排序
min_index = num_list.index(sorted_list[0]) # 找到最小值的下标
max_index = num_list.index(sorted_list[-1]) # 找到最大值的下标
num_list[0], num_list[min_index] = num_list[min_index], num_list[0] # 将最小值与第一个数交换
num_list[-1], num_list[max_index] = num_list[max_index], num_list[-1] # 将最大值与最后一个数交换
print(' '.join(map(str, num_list))) # 输出交换后的序列
```
交换最大值和最小值ptaC++
在C++中,如果你想交换两个变量的最大值和最小值,通常可以采用以下几种方法:
1. **直接赋值法**:
如果你知道这两个数的范围有限,可以直接比较它们并交换。例如:
```cpp
int a = 5, b = 10;
int temp = (a > b) ? a : b; // 存储较大的值
a = (a > b) ? b : a; // 小的值赋给a
b = temp; // 最大的值赋给b
```
2. **临时变量法**:
使用一个临时变量存储其中一个值,然后交换:
```cpp
int a = 5, b = 10;
int temp = a;
if (b < a) {
a = b;
b = temp;
}
```
3. **自增自减操作**:
利用整型的性质,可以利用加减操作来实现交换,如:
```cpp
int a = 5, b = 10;
a = a + b; // a = 15
b = a - b; // b = 5
a = a - b; // a = 10
```
4. **模板函数**:
如果需要处理不同类型的数值,可以使用模板函数:
```cpp
template<typename T>
void swapMaxMin(T& max, T& min) {
if (max < min) {
std::swap(max, min);
}
}
```
然后调用 `swapMaxMin(a, b);`
阅读全文