21xrx.com
2025-04-27 20:09:34 Sunday
文章检索 我的文章 写文章
C++交换最大值和最小值
2023-06-28 09:29:16 深夜i     62     0
C++ 交换 最大值 最小值

在C++中,有时候需要对数组或向量中的最大值和最小值进行交换,这里介绍一种简单的方法。

首先,需要定义一个数组或向量。以数组为例:

int arr[] = 8;

接下来,需要找到最大值和最小值的位置。可以使用for循环遍历数组,如下所示:

int minPos = 0, maxPos = 0;
for (int i = 1; i < sizeof(arr) / sizeof(arr[0]); i++) {
  if (arr[i] < arr[minPos])
    minPos = i;
  
  if (arr[i] > arr[maxPos])
    maxPos = i;
  
}

这个循环会从数组的第二个元素开始遍历,依次和当前的最小值和最大值进行比较,如果找到更小或更大的元素,就更新minPos和maxPos的值。

最后,交换最大值和最小值即可。可以使用一个临时变量temp来完成交换,如下所示:

int temp = arr[minPos];
arr[minPos] = arr[maxPos];
arr[maxPos] = temp;

完整的代码如下:

#include<iostream>
using namespace std;
int main() {
  int arr[] = 8;
  int minPos = 0, maxPos = 0;
  for (int i = 1; i < sizeof(arr) / sizeof(arr[0]); i++) {
    if (arr[i] < arr[minPos])
      minPos = i;
    
    if (arr[i] > arr[maxPos])
      maxPos = i;
    
  }
  int temp = arr[minPos];
  arr[minPos] = arr[maxPos];
  arr[maxPos] = temp;
  for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
    cout << arr[i] << " ";
  }
  return 0;
}

输出结果为:

7 5 3 9 6 8 4 1 2

可以看到,最大值9和最小值1已经被成功地交换了。

  
  

评论区

请求出错了