gpt4 book ai didi

c++ - 如何交换数组中 Min 和 Max 的位置?

转载 作者:行者123 更新时间:2023-11-30 00:43:41 24 4
gpt4 key购买 nike

在代码中,我找到了任何给定数组的 minmax 值。现在我想交换他们的位置,然后打印出来。比如 MinMax 的位置,反之亦然。我怎样才能改变他们的立场?我猜是我做错了。

#include <iostream>

using namespace std;

int main()
{
int array[8] = { 0, 0, 0, 0, 0, 0, 0, 0};
int min = array[0];
int max = array[0];
int indexOfMin = 0;
int indexOfMax = 0;
int arrSize = sizeof(array)/sizeof(array[0]);
int temp = 0;

cout << "Enter an array: ";

int k;
for(k = 0; k <= arrSize; k++){
cin >> array[k];
}

for (int i = 0; i < arrSize; i++){
if(array[i] >= max ){
max = array[i];
indexOfMax = i;
}
}

for (int i = 0; i < arrSize; i++){
if(array[i] == min){
continue;
}
if(array[i] < min){
min = array[i];
indexOfMin = i;
}
}

temp = min;
min = max;
max = temp;

cout << array[k] << " " <<endl;

return 0;
}

输入 = 1, 5, 9, 1, 2, 9, 1, 3
输出 = 9、5、9、1、2、1、1、3

最佳答案

您已经有了找到最大值和最小值的索引。你也有最大值和最小值。使用该信息交换数组中的最大值和最小值是微不足道的。使用:

array[indexofMin] = max;
array[indexOfMax] = min;

改进代码的建议:

1。修复数组访问问题

for(k = 0; k <= arrSize; k++){ 
cin >> array[k];
}

是一个问题,因为您正在修改 array使用越界索引。将其更改为使用 k < arrSize .

2。修复 max 的初始化和 min

你需要初始化maxmin仅在用用户输入填充数组后。移动线条

int min = array[0]; 
int max = array[0];

在循环之后立即读取数据。

3。仅使用一个循环来计算最大值和最小值

for (int i = 0; i < arrSize; i++){ 
if(array[i] >= max ){
max = array[i];
indexOfMax = i;
}

if(array[i] < min){
min = array[i];
indexOfMin = i;
}
}

4。删除交换最大值和最小值的代码

线条

temp = min;
min = max;
max = temp;

交换 max 的值和 min但它们不会更改数组的内容。

5。使用循环打印数组

代替

cout << array[k] << " " <<endl;

使用

for (int i = 0; i < arrSize; i++){ 
cout << array[k] << " ";
}
cout << endl;

关于c++ - 如何交换数组中 Min 和 Max 的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52863194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com