2015-04-02 93 views
1

我要經過一個數組並打印出無論是排序或沒有,如果不是 - 打印出未排序的前兩個元素(例如:6> 5)。寫這個函數有什麼更好的方法?

所以我想知道怎樣纔算一個函數來做到這一點的最好辦法:

  1. 做一個void功能,打印出任何「這是排序」或「沒有排序」,如果它不它也打印出這兩個元素。
  2. 做一個boolean功能,打印出兩個未排序的元素(如果有的話),並最終返回true或false。然後根據函數返回的內容,打印出數組是否在main中排序。
  3. 不要在main一切,這可能是不適合的功能?
  4. 還有其他的一些方法嗎?

請注意,我不是關於我的任務本身要求的任何幫助!

+0

少於3秒後,它被認爲是downvoted?什麼?? – user3213110 2015-04-02 18:38:38

+0

你的問題沒問題,它詢問代碼風格,是合法的 – Eyal 2015-04-02 18:50:09

回答

2

我想創建一個返回的最後一個分選的細胞的指數,所以如果是最後一個單元格,然後萬事俱備,如果是小於,你可以很容易地找到也主中的下一個元素和打印的功能。 我不認爲功能應該有副作用的影響(如打印),當他們爲其他目的而作出,而像這樣的返回指數函數是可以使用的:

private int getFirstSortedIndex(int[] numbers){ 
    int index = 0; 
    //find and return the first sorted index; 
    return index; 
} 

public static void main(String[] args){ 
    int[] numbers; 
    //get the array from user input or arguments 
    int index = getFirstSortedElement(numbers); 
    if(index < numbers.length-1){ 
     //print numbers[index] and numbers[index+1] 
    } else{ 
     //print "it's sorted" 
    } 
} 
0

我將創建一個它返回一個不正確的排序的第一個元素的索引方法:

/** 
* @param array ordered array 
* @return the index of the first unordered element, or -1 if the array is ordered 
*/ 
static int isOrdered(int[] array) { 
    // iterate through the array 
    //  if a two sequential elements are not ordered, return the index of the first element 
    // if all is ok, return -1 
} 

然後執行:

int unsortedIndex = isOrdered(array); 
if (unsortedIndex != -1) { 
    System.out.println(array[unsortedIndex] + ", " + array[unsortedIndex + 1]); 
} 

這比打印的元素更好迪直接在isOrdered(),因爲現在如果需要,您可以在代碼的其他部分重新使用isOrdered()。我張貼這種

相關問題