order は、昇順なら 1、降順なら -1、どちらでもなければ 0 を返す関数です。
C
1#include <stdio.h>
2
3int order(int a[], int n)
4{
5 int ascend = 0, descend = 0;
6 for (int i = 1; i < n; i++) {
7 if (a[i-1] < a[i]) ascend = 1;
8 if (a[i-1] > a[i]) descend = 1;
9 if (ascend && descend) return 0;
10 }
11 return descend ? -1 : ascend;
12}
13
14int main(void)
15{
16 int a[] = {1,2,3,4,5}, b[] = {-2,4,3,-3,5};
17 int c[] = {9,8,7,6,5}, d[] = {3,3,3,3,3}, e[] = {7};
18 printf("%d\n", order(a, 5));
19 printf("%d\n", order(b, 5));
20 printf("%d\n", order(c, 5));
21 printf("%d\n", order(d, 5));
22 printf("%d\n", order(e, 1));
23}
実行結果
追記
全部同じ値の時は 0 を、昇順と降順の両方阿ある時は 2 を返すようにするには
for文の中の return 0;
を return 2;
にすればよいでしょう。
追記2
昇順でも降順でもどちらでもいいし、値が全部同じでもソートされているとして 1を返すなら、
for文の中の return 0;
はそのままで、最後を return 1;
にすればよいでしょう。