这个写了蛮长时间的,主要是在想如何让程序判断不是一种排序后检查是不是另一种排序,我想出的这个方法可能不是最优的,如果谁有更好的办法,请留言告诉我。 **仅给有需要的人以参考,如有错误请纠正我** #include<iostream> template<typename T> bool is_sorted(T arr[], int n) { T temp; int i; for (i = 0; i < n; i++) //首先检测降序 { temp = arr[i]; if (i == n - 2) //如果检测到了倒数第二个数 则它大于或等于最后一个数就返回ture { //如果不满足>= 那就再检测是否是升序排序 if (temp >= arr[i + 1]) return true; else break; } if (temp > arr[i + 1]) //因为倒数第二个数之前的数用这个检测了,如果有错误 就退出循环 检测升序 continue; } for (i = 0; i < n; i++) //检测升序 { temp = arr[i]; if (i + 1 == n) //这是为了防止temp == arr[n - 1] 与 arr[n] 做比较 因为超出数组边界了 break; //会返回一个很大的负数 if (temp <= arr[i + 1]) continue; else return false; } return true; } int main() { using namespace std; int arr[5] = { 20, 20, 30, 50, 60 }; if (is_sorted(arr, 5)) cout << "true\n"; else cout << "false\n"; return 0; }