如何检查数组是降序,升序还是未排序?

问题描述:

所以我的代码工作正常,如果数组升序或降序,只是当它没有排序,我碰到一个问题。它不会显示“未排序”,而会显示升序和降序。我该怎么办?如何检查数组是降序,升序还是未排序?

int[] array; 
array= new int[]{1,5,6,11,55}; 
boolean answerDes= false; 
boolean answerAsc= false; 

for (int i=0; i<array.length-1; i++){ 
    if(array[i]>array[i+1]) 
    answerDes=true; 
    if(array[i]<array[i+1]) 
    answerAsc=true; 
} 
if(answerDes) 
    System.out.println("Descending"); 
if(answerAsc) 
    System.out.println("Ascending"); 
if(!answerAsc && !answerDes) 
    System.out.println("Not sorted"); 

} }

内,您的for循环中,你比较只是两个值,可以这样考虑:

在未排序的数组,在一个点array[i]可能比array[i+1]更大,然后array[i]可能小于array[i+1],这意味着answerDesanswerAsc将被设置为true,这意味着它将在if语句中打印降序和升序,驯服他们。

例如:一个数组,它是:1,3,5,2,6,7]可以使您answerDesanswerAsc值都为true

也许考虑不同的阵列比较逻辑,然后比较了“没有排序'然后在else陈述之后包括升序和降序比较,而不是使用全部if陈述

请参阅this链接用于在C#中对数组进行排序。

PS尽量不要发明*:)

由于二者均为真当阵列是无序两个if -statements通过,以避免这一点,你可以用如下图所示,在这里当一个更换comditional声明两者都是真实的,它会去else声明

if(!answerDes) 
    System.out.println("Ascending"); 
else if(!answerAsc) 
    System.out.println("Descending"); 
else { 
    System.out.println("Not sorted"); 
} 
}