交换最小值和最大值pta
时间: 2023-08-10 15:02:53 浏览: 89
这个问题是一个经典的编程问题。通常的解法是遍历整个数组,同时记录最小值和最大值出现的索引,然后交换这两个索引对应的数组元素。
以下是一个示例代码:
```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;
}
```
这个程序首先读入数组的大小和元素,然后遍历整个数组找到最小值和最大值的索引,最后交换这两个索引对应的元素。最后输出交换后的数组。
相关问题
交换最小值和最大值c语言
可以使用以下代码来实现交换一个数组中的最小值和最大值:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void swapMinMax(int arr[], int size) {
int minIndex = 0, maxIndex = 0;
// 找到最小值和最大值的下标
for (int i = 1; i < size; i++) {
if (arr[i] < arr[minIndex]) {
minIndex = i;
} else if (arr[i] > arr[maxIndex]) {
maxIndex = i;
}
}
// 交换最小值和最大值
swap(&arr[minIndex], &arr[maxIndex]);
}
int main() {
int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int size = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
swapMinMax(arr, size);
printf("Swapped array: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
输出结果如下:
```
Original array: 3 1 4 1 5 9 2 6 5 3 5
Swapped array: 3 9 4 1 5 1 2 6 5 3 5
```
c语言交换最小值和最大值
可以使用数组来存储一组数据,然后遍历数组找到最小值和最大值的下标,最后交换它们的值即可实现交换最小值和最大值的操作。
下面是一个示例代码:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int arr[] = {5, 1, 9, 3, 7};
int n = sizeof(arr) / sizeof(arr[0]);
int min_idx = 0, max_idx = 0;
for (int i = 1; i < n; i++) {
if (arr[i] < arr[min_idx]) {
min_idx = i;
}
if (arr[i] > arr[max_idx]) {
max_idx = i;
}
}
swap(&arr[min_idx], &arr[max_idx]);
printf("交换后的数组:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
输出结果:
```
交换后的数组:5 9 1 3 7
```