2017-04-17 49 views
-2

整理我要創建數組,如果沒有排序 返回1,如果是按升序排列,返回排序-1如果按降序排列檢查數組是Java

排序,返回0的方法這是到目前爲止,我已經做了:

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. 問題是如何檢查兩個條件是否都失敗,即如果它沒有排序,則爲 。

+1

走一步到你的代碼爲陣列1 2 1,並記下的'價值val'變量在每個循環迭代 –

+1

只是一個註釋:在你的for循環中用'i <= end'替換'i

+0

如果數組中的前兩個元素增加,檢查所有後續元素是否也在增加;如果前兩個元素減少,請檢查所有後續元素是否正在減少。 –

回答

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; 
} 
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

在這裏你走一步

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

    }