c++ - 如何交换数组中的最后一个元素和最大元素?
问题描述
如何交换数组的最大和最后一个元素?
我想编写一个程序,它请求自然数NN(不超过100),从各种数的NN进一步序列,改变最后一个元素和最大值的位置,保持其他元素不变,并推导接收到的数组。
样本输入 1:
8
3 6 12 1 7 19 25 4
样本输出 1:
3 6 12 1 7 19 4 25
这是我尝试过的:
#include <iostream>
using namespace std;
int main()
{
int i,arr[100],n;
cin>>n;
int imin=0;
for (int i=0; i<n; i++){cin>>arr[i];}
int max=0;
for (i=1;i<n;i++)
{
if (arr[i]>arr[max])
max=i;
int tmp=arr[max];
arr[max]=arr[n-1];
arr[n-1]=tmp;
for (i=0;i<n;i++)
cout <<arr[i]<< " ";
cout << "\n";
}
return 0;
}
它不会改变最大和最后的位置。我怎样才能做到这一点?
解决方案
#include <algorithm> // max_element, iter_swap
// ...
auto me = std::max_element(arr, arr + n); // get an iterator to the largest element
std::iter_swap(me, arr + n - 1); // swap the value at "me" with the last element
推荐阅读
- swift - 如何在 Swift 中以编程方式绘制李萨如曲线?
- azure-devops - 如何从 Azure devops Web 扩展访问 GraphRestClient?
- for-loop - 如何减少R中循环的执行时间?
- java - 如何检查另一个表的表中是否存在记录?
- jekyll - Jekyll 的 Open Graph 未按预期显示
- java - 无法从 Pojo 类反序列化 JSON 响应和访问类
- sas - SAS中的猫给了我空白
- api - How to create or update file using Github content api
- spring-boot - 只让 run 方法执行(来自 CommandLineRunner 或 ApplicationRunner),然后在没有 Spring boot 应用程序启动的情况下停止
- r - 在时间间隔上刻面 ggraph 图