Какой лучший способ написать эту функцию?

1

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

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

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

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

  • 0
    Менее чем через 3 секунды после того, как я опубликовал это, его понизили? Какая??
  • 0
    Ваш вопрос в порядке, он спрашивает о стиле кода и является законным
Теги:
arrays
function
sorted

2 ответа

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню