为什么它不交换数组中的两个整数?
Why it doesn't swap two integers in an array?
#include <iostream>
using namespace std;
int main()
{
int A[6]={3,7,9,4,6,1};
int max;
max = A[0];
for(int i=0; i< 6; i++)
{
if(A[i] > max)
{
max = A[i];
}
}
//cout << max <<"n";
int temp;
temp=A[0];
A[0]=max;
max = temp;
for(int i=0;i<6;i++)
{
cout << A[i] << endl;
}
return 0;
}
我想将最大值与已列录数组中的第一个值交换,但它仅替换1个值,而最大值也保留在其位置。
逻辑有点错。实际上,您将可变max
的值交换为max
值。
如果您想将元素与最大值交换,请跟踪其位置,例如:
if(A[i] > max)
{
max = A[i];
pos = i;
}
和交换时,使用如下:
int temp;
temp=A[0];
A[0]=A[pos];
A[pos] = temp;
注意:另一种方法是使用指针,这只是一个简单的非排列方法。
您正在用变量max
交换A[0]
,而不是您从中获得其值的数组元素。
您可以将max
作为指针,以便可以用于访问数组元素。或者,您可能会记住该值来自的数组索引。或者您可以使用标准库:
swap(A[0], *max_element(begin(A), end(A)));
max
只是一个整数,它不会指向数组中的任何位置,因此分配它不会更改数组。您可以将max
更改为指针,以便将其更改为指向的值:
int main()
{
int A[6]={3,7,9,4,6,1};
int *max;
max = &A[0];
for(int i=0; i< 6; i++)
{
if(A[i] > *max)
{
max = &A[i];
}
}
int temp;
temp=A[0];
A[0]=*max;
*max = temp;
for(int i=0;i<6;i++)
{
cout << A[i] << endl;
}
return 0;
}
相关文章:
- C++需要帮助从用户那里获得一个整数,并确保它在另外两个整数之间
- 比较C++中两个整数的最有效和最干净的方法是什么?
- 比较两个整数在C++中与未知 int 类型的相等性
- 如何组合两个整数向量
- 在两个整数之间交换最右边的N位
- 打印出两个整数之间的偶数
- Python 等效代码,可像C++一样直接附加两个整数
- 移位运算符如何在查找两个整数中的不同位数?
- 运算符"|"如何计算两个整数?
- 如何找出在两个整数的乘积中设置了多少位(等于 1)
- 当键是两个整数时,C 地图或unordered_map
- C 将两个整数进入队列
- 比较 C++ 字符串打印中的两个整数数组
- 为什么双精度不存储两个整数的乘积
- C++将字符串输入拆分为两个整数
- C 中的内存模型:为什么在同一内存位置分配了结构中的两个整数
- 获取所有方式以两个整数的产品表示数字
- Systemc传输级建模从TLM_Generic_Payload提取两个整数
- 数据的所有组合都是产品的两个整数
- 编写一个功能,该函数将使用框架交换两个整数