首页 > 解决方案 > 如何在不使用“if”语句的情况下检查整数数组是否已排序?

问题描述

如何在不使用 if 语句的情况下更改此代码以使其正常工作?我尝试使用 while 循环,但它不起作用。从那以后我意识到我错误地使用了while循环。那我该怎么做呢?(使用java)

public class isSorted {
    public static void main(String[] args) {
        //declaring array literal
        double a[] = {1.5, 4.3, 7.0, 19.5, 25.1, 46.2};
        int L = a.length;
        boolean isSorted = false;
        for (double i = 0; i < L; i++) {
            if (a[(int) i] < a[(int) (i + 1)]) {
                isSorted = true;

            }
            break;
        }
        System.out.println(isSorted);
    }

}

标签: javaarrays

解决方案


一种方法是这样的:

double a[] = {1.5, 4.3, 7.0, 19.5, 25.1, 46.2};
int i = 0;
while (i < a.length - 1 && a[i] <= a[i + 1]) 
    i++;

boolean isSorted = i >= a.length - 1; 
System.out.println(isSorted);

基本上你检查当前元素是否小于或等于下一个元素,直到你发现不匹配或整个数组被解析。然后检查i变量的值将告诉您数组是否已排序。

要检查降序,只需将条件更改为:

a[i - 1] >= a[i]

推荐阅读