如何按降序打印数组?

How to print an array in descending order?

本文关键字:数组 打印 降序 何按      更新时间:2023-10-16

基本上这是我的代码,它工作正常。我只是不知道如何按降序打印它。此代码基本上显示奇数:1,3,5,7。我希望它被打印 7,5,3,1。我知道我需要使用排序功能,但我不知道怎么做。

#include <iostream>
using namespace std;
void fillArray(int arr[], int &n);
void printArray(int arr[], int n);
void findSum(int arr[], int &n);
int main()
{
int n;
cin>>n;
int arr[n];
fillArray(arr,n);
printArray(arr,n);
findSum(arr,n);
return 0;
}
void fillArray(int arr[], int &n)
{
int j=1;
for(int i=0;i<n;i++)
{
if(j%2==1)
arr[i]=j;
else
i--;
j++;
}
}
void printArray(int arr[], int n)
{
for(int i=0;i<n;i++)
{
cout<<arr[i]<<", ";
}
}
void findSum(int arr[], int &n)
{
int sum=0;
for(int i=0;i<n;i++)
{
sum=sum+arr[i];
}
}
for(int i = n-1; i >= 0; i--)
{
cout << arr[i] << ", ";
}

示例:

void printArray(int *tab, int size)
{
for (int i = size - 1; i >= 0; i--)
std::cout << tab[i] << std::endl;
}
int main() {
int tab[3] = { 1,2,3 };
printArray(tab, 3);
}

你应该从最后一个元素数组开始,递减迭代器(i(到i == 0

您可以简单地使用排序函数。算法标头中包含一个。

#include <algorithm> // this goes at the top
void printArray(int arr[], int n)
{
sort(arr, arr+n, [](int x, int y){return y<x;});
for(int i=0;i<n;i++)
cout << arr[i] << endl;
}

[](int x, int y){return y<x;}部分只是让它下降。通常它是 y>x,此时您可以省略第三个参数

这是一个参考: https://repl.it/JQor/0