求助:用Java实现判断数组是否为非递减排序的方法
Java判断整数数组是否为非递减排序的实现
直接上可运行的代码,解决你的需求:
public class NonDecreasingChecker { public static int isNonDecreasing(int[] A) { // 空数组或只有一个元素,必然是非递减的 if (A == null || A.length <= 1) { return 1; } // 从第二个元素开始,逐个与前一个元素对比 for (int i = 1; i < A.length; i++) { // 只要当前元素小于前一个,就不符合非递减要求,直接返回0 if (A[i] < A[i - 1]) { return 0; } } // 遍历结束未发现递减情况,返回1 return 1; } // 测试示例 public static void main(String[] args) { int[] arr1 = {1, 2, 2}; System.out.println(isNonDecreasing(arr1)); // 输出1 int[] arr2 = {1, 2, 1}; System.out.println(isNonDecreasing(arr2)); // 输出0 } }
关键说明
- 边界处理:别忽略空数组或单元素数组的情况,这类数组不存在递减的可能,直接返回1即可。
- 循环逻辑:从索引1开始遍历,对比当前元素与前一个元素(
A[i]vsA[i-1]),能避免数组越界——如果从0开始对比A[i]和A[i+1],最后一个元素会触发越界异常,这可能是你之前遇到的问题之一。 - 提前终止:一旦发现递减情况,立刻返回0,无需继续遍历剩余元素,提升效率。
你可能踩过的坑
- 循环起始索引选成0,导致数组越界;
- 判断条件写反,比如用
A[i] > A[i-1]来返回错误结果; - 未处理空数组/单元素数组的特殊情况,导致异常。
内容的提问来源于stack exchange,提问作者stark thor
相关产品推荐
相关产品推荐

