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

时间:2017-04-18 15:05:39

标签: arrays sorting

因此,如果数组是升序或降序,我的代码工作正常,只是当它没有排序时我会遇到问题。它不会显示"未排序",而是显示升序和降序。我该怎么办?

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");

} }

2 个答案:

答案 0 :(得分:1)

因为当数组都未排序时两者都为真,所以if - 语句都会通过,为了避免这种情况,你可以用下面显示的语句替换条件语句,这里当两者都为真时它将转到{{ 1}}陈述

else

答案 1 :(得分:0)

在你的for循环中,你只是比较两个值,考虑一下:

在未排序的数组中,某一点array[i]可能大于array[i+1],然后array[i]可能小于array[i+1],这意味着两者{ {1}}和answerDes将设置为answerAsc,这意味着它将在包含它们的if语句中打印Descending和Ascending。

示例:一个数组:[1,3,5,2,6,7]可能会使您的trueanswerDes值都为真

也许考虑不同的数组比较逻辑,然后首先比较“未排序”,然后在answerAsc语句中包括升序和降序比较,而不是使用所有else语句

请参阅this链接,以便在C#中对数组进行排序。

P.S尽量不发明轮子:)