21xrx.com
2024-11-22 11:39:20 Friday
登录
文章检索 我的文章 写文章
C++交换最大值和最小值
2023-06-25 22:51:37 深夜i     --     --
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已经被成功地交换了。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复