检查数组是否在java中排序

时间:2017-04-17 19:58:20

标签: java

我想创建一个方法,如果数组未排序则返回0 如果按升序排序则返回1,如果按降序排序则返回-1

这是我到目前为止所做的:

public static int isSorted(int[] intArray) {

    int end = intArray.length - 1;
    int val = 0;

    for (int i = 1; i < end; i++) {

        if (intArray[0] < intArray[i]) {

            val = 1;
        }

        else if (intArray[0] > intArray[i]) {

            val = -1;
        }
    }

    return v;
}

}

如果升序则返回1,如果降序则返回-1。 但是,如果我创建一个随机数组,它不会返回0。 问题是如何检查两个条件是否都失败,即 如果它根本没有排序。

3 个答案:

答案 0 :(得分:1)

您的比较只是在第一个元素和数组中的其他元素之间。

val = 0;
for(int i=0;i<=end;i++){
     for(int j=0;j<end;j++){
          if(intArray[j]>intArray[j+1])
               val = 1; 

     }
   }
 return val;

答案 1 :(得分:1)

您可以使用另外两个变量来计算:

public static int isSorted(int[] intArray) {

    int end = intArray.length-1;
    int counterAsc = 0;
    int counterDesc = 0;

    for (int i = 0; i < end; i++) {
        if(intArray[i] < intArray[i+1]){
            counterAsc++;
        }
        else if(intArray[i] > intArray[i+1]){
            counterDesc++;
        }
    }
    if(counterDesc == 0){
        return 1;
    }
    else if(counterAsc == 0){
        return -1;
    }
    else return 0;
}

答案 2 :(得分:1)

你去吧

public class stackoverflow {


    public static int isSorted(int[] intArray) {


    boolean sortedAsc = true;
    boolean sortedDesc = true;
    boolean sameValues=true;
    int result = 0;

    for (int i = 0; i < intArray.length-1; i++)
    {

        if (intArray[i] > intArray[i+1]) {
            sortedAsc=false;
            sameValues=false;
        }
        if (intArray[i] < intArray[i+1]) {
            sortedDesc=false;
            sameValues=false;
        }
        }

    if(sortedAsc) result= 1;
    if(sortedDesc) result =  -1;
    if(sameValues) result = 2;

    return result;
}

    public static void main(String[] args) {
        // TODO code application logic here
        int array[] = new int[4];
        array[0]=1;
        array[1]=2;
        array[2]=3;
        array[3]=4;

        System.out.println(isSorted(array));

    }