C++ 交换值';在C++;

C++ 交换值';在C++;,c++,arrays,sorting,indexing,C++,Arrays,Sorting,Indexing,我试图交换数组中值的索引,使数组按降序存储它们。但产出并不像预期的那样。我在多个数组中按升序输入值,然后将它们合并到一个数组“result”(值仍按升序排列),现在我希望交换数组“result”中的值索引,使其按降序存储。我想到的逻辑如下 for(int i=0, j=ind-1; i<ind; j--,i++) //ind is index of array "result" { result[i]=result[j]; } for (int final = 0; final <

我试图交换数组中值的索引,使数组按降序存储它们。但产出并不像预期的那样。我在多个数组中按升序输入值,然后将它们合并到一个数组“result”(值仍按升序排列),现在我希望交换数组“result”中的值索引,使其按降序存储。我想到的逻辑如下

for(int i=0, j=ind-1; i<ind; j--,i++) //ind is index of array "result"
{
  result[i]=result[j];
}
for (int final = 0; final < end; final++)
{
  cout << result[final] << " ";
}

for(int i=0,j=ind-1;i交换操作是错误的。最好的选择是使用辅助变量:

  auto aux = result[j];
  result[j] = result[i];
  result[i] = aux;

首先,你不必迭代整个数组,因为你要交换它的一半,否则你会交换两次,所以不会有任何变化

其次,这是交换两个数组元素的正确(基本)方法

for(int i=0, j=ind-1; i<j; j--,i++) //ind is index of array "result"
{
  auto temp=result[i];
  result[i]=result[j];
  result[j]=temp;
}

查看了解更多信息。

或者更好:
std::swap(结果[j],结果[i]);
(请参见)我说过你不能使用函数。我如何使用循环?为什么不使用函数?
std::swap
是你问题的完美解决方案。这是一个条件,我不能
j=(int)ind/2