2015-04-02 5 views
1

Мне нужно пройти через массив и распечатать, было ли оно отсортировано или нет, а если нет - распечатайте первые два элемента, которые не отсортированы (например: 6> 5).Каков лучший способ написать эту функцию?

Так мне было интересно, что будет считаться лучшим способом сделать это с помощью функции:

  1. Сделайте void функцию, которая печатает либо «Это отсортированный» или «Это не сортируется», и если это не он печатает также два элемента.
  2. Создайте функцию boolean, которая печатает два несортированных элемента (если они есть) и в конечном итоге возвращает true или false. Затем, в зависимости от возвращаемой функции, распечатайте, отсортирован ли массив в main.
  3. Сделать все в main, так как это может быть неприемлемо для функции?
  4. Некоторые другие способы?

Обратите внимание, что я не прошу ни о какой помощи в отношении моего задания!

+0

Менее чем через 3 секунды после того, как я разместил это, он получил downvoted? Какие?? – user3213110

+0

Ваш вопрос в порядке, он спрашивает о стиле кода и является законным – Eyal

ответ

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() в других частях кода, если вам нужно.

Смежные вопросы