思路:用两个数组来分别存贮排序过的升序和降序的序列,然后用一个for循环来进行比较,如果相等,那么就num1,num2分别++;然后如果num1 == N 或 者 num2 == N 就输出sort,否则就输出unsort
#include<bits/stdc++.h> #define maxn 55 using namespace std; int a[maxn]; int b[maxn]; int c[maxn]; int cmpp(int x,int y){//函数使从大到小排列 return x > y; } int main(){ int N; cin>>N; for(int i=0;i<N;i++){//输入并赋给两个数组用来排序 cin>>a[i]; b[i] = a[i]; c[i] = a[i]; } sort(b,b+N);//自身从小到大排序 //for(int i=0;i<N;i++) //cout<<b[i]<<" "; //cout<<endl; sort(c,c+N,cmpp);//自身从大到小排序 // for(int i=0;i<N;i++) //cout<<c[i]<<" "; // cout<<endl; int num1 = 0; int num2 = 0; for(int i=0;i<N;i++){//判断是否存在N个序列一样的数 if(a[i] == b[i]) num1++;//若从小到大,num1++ if(a[i] == c[i]) num2++;//一样 } if(num2 == N || num1 == N) cout<<"sorted"<<endl;//说明是有序的 else cout<<"unsorted"<<endl;//否则输出无序 return 0; }
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句