C++ 交换数组/向量中的所有最小数和最大数
我试图制作一个程序,交换数组或向量中所有最大和最小的数字。我提出了一个程序,但由于某种原因,我无法调试它来解决问题。它没有打印矢量,我也不知道问题出在哪里。谁能帮帮我吗C++ 交换数组/向量中的所有最小数和最大数,c++,arrays,sorting,vector,C++,Arrays,Sorting,Vector,我试图制作一个程序,交换数组或向量中所有最大和最小的数字。我提出了一个程序,但由于某种原因,我无法调试它来解决问题。它没有打印矢量,我也不知道问题出在哪里。谁能帮帮我吗 #包括 #包括 #包括 使用名称空间std; int main() { int n; cin>>n;//大小输入 向量arr; 对于(int i=0;i>输入; arr.push_back(输入); } 向量arr1=arr;//复制向量 排序(arr1.begin(),arr1.end());//对新向量进行排序 int i
#包括
#包括
#包括
使用名称空间std;
int main()
{
int n;
cin>>n;//大小输入
向量arr;
对于(int i=0;i>输入;
arr.push_back(输入);
}
向量arr1=arr;//复制向量
排序(arr1.begin(),arr1.end());//对新向量进行排序
int i=0,j=n-1,i1=0,j1=n-1;//i和j代表矢量arr&i1,而j1代表矢量arr1
而(i1一种更简单的方法是生成索引向量,而不是对向量排序并尝试在原始向量中查找值。例如:
#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
int n;
std::cin >> n;
std::vector<int> arr;
std::vector<int> indexes;
for (int i = 0; i < n; i++)
{
int input;
std::cin >> input;
arr.push_back(input);
indexes.push_back(i);
}
std::sort(indexes.begin(), indexes.end(), [&](int a, int b) {return arr[a] < arr[b]; });
for (int i = 0, j = n - 1; i < n / 2; i++, j--)
{
std::swap(arr[indexes[i]], arr[indexes[j]]);
}
for (int f = 0; f < n; f++)
{
std::cout << arr[f] << " ";
}
return 0;
}
#包括
#包括
#包括
int main()
{
int n;
标准:cin>>n;
std::载体arr;
std::向量索引;
对于(int i=0;i>输入;
arr.push_back(输入);
索引。推回(i);
}
排序(index.begin(),index.end(),[&](inta,intb){返回arr[a] std::如果arr1
包含arr
中项目的索引,那么问题的描述可能会简单得多。你所说的“交换所有最小和最大的数字”是什么意思?将输入和所需的输出作为文本,而不是作为链接图像(也不是作为代码底部的内容)包括在内.-1.打印完数组后,试着在末尾输出一个换行符。你的程序似乎完全按照你希望的方式运行。你知道,它确实运行了,但我不理解排序函数中“[&](int a,int b){return arr[a]#include <iostream>
#include <algorithm>
#include <vector>
int main()
{
int n;
std::cin >> n;
std::vector<int> arr;
std::vector<int> indexes;
for (int i = 0; i < n; i++)
{
int input;
std::cin >> input;
arr.push_back(input);
indexes.push_back(i);
}
std::sort(indexes.begin(), indexes.end(), [&](int a, int b) {return arr[a] < arr[b]; });
for (int i = 0, j = n - 1; i < n / 2; i++, j--)
{
std::swap(arr[indexes[i]], arr[indexes[j]]);
}
for (int f = 0; f < n; f++)
{
std::cout << arr[f] << " ";
}
return 0;
}