C++题目分享之重新排序递增递减类

题目描述
对于一个整数n,和一个数组a[n],将a[n]中的元素重新排列,使其元素为从小到大或者从大到小的顺序。
输入格式
一个正整数n和数组元素。
输出格式
重新排列后的数组元素,中间用空格隔开。
输入输出样例
输入 #1
7
7 4 2 5 1 3 6
输出 #1
1 2 3 4 5 6 7

这题是我比较前期做的,用的死办法

#include<iostream>
using namespace std;
int main()
{
	int n,i,j,temp;
	cin>>n;
	int a[n];
	for(i=0;i<n;i++)
    {
        cin>>a[i];
    }
    for(i=0;i<n-1;i++)
    {
       for(j=0;j<n-i-1;j++)
        {
        if(a[j]>a[j+1])     //递减就用<
        { 
			temp=a[j];
            a[j]=a[j+1];
            a[j+1]=temp;
        }
        }
    }
    for(i=0;i<n;i++)
    {
        cout<<a[i]<<" ";
    }
	return 0;
}

学到后期(指的是学习STL后)直接一个multiset函数就可以了

#include <iostream>
#include <set>
using namespace std;
void printSet(multiset<int>&s)
{
	for(multiset<int>::iterator it=s.begin();it !=s.end();it++)
	{
		cout<< *it<<" ";
	}
}
int main()
{
    int n,i;
    cin>>n;
    int a[n+1];
    multiset<int>s1;
    for(i=0;i<n;i++)
    {
        cin>>a[i];
        s1.insert(a[i]);
    }
    printSet(s1);
    return 0;
}

上一篇:Pytorch 基础练习+螺旋数据分类


下一篇:深度学习-线性代数