又是一个不用数组系列 用到一个非常基本的数学 (b-a)*(c-b)>=0,那么a,b,c就是有序的
#include <iostream>
using namespace std;
int main()
{
int len;
cin>>len;
int a,b;
cin>>a>>b;
int c;
len -= 2;
bool active = false;
while(len--)
{
cin>>c;
if((b-a)*(c-b)>=0)
{
a = b;
b = c;
active = true;
}
else
{
cout<<"unsorted";
active = false;
break;
}
}
if(active) cout<<"sorted";
return 0;
}
我感觉我的代码还是有点繁琐,有没有人可以优化一下 谢谢,点个赞再走吧
几年后的优化:修改了一下代码的判断
#include <iostream>
using namespace std;
int main() {
int len;
cin >> len;
if (len < 3) {
cout << "sorted" << endl;
return 0;
}
int a, b, c;
cin >> a >> b;
bool increasing = (b >= a);
bool decreasing = (b <= a);
for (int i = 2; i < len; ++i) {
cin >> c;
if ((increasing && c < b) || (decreasing && c > b)) {
cout << "unsorted" << endl;
return 0;
}
a = b;
b = c;
}
cout << "sorted" << endl;
return 0;
}