Мне нужно пройти через массив и распечатать, отсортировано или нет, а если нет - распечатайте первые два элемента, которые не отсортированы (например: 6> 5).
Поэтому мне было интересно, что будет считаться лучшим способом сделать это с помощью функции:
void
которая печатает либо "It sorted", либо "It not sorted", и если она не отображает оба элемента.boolean
функцию, которая печатает два несортированных элемента (если они есть) и в конечном итоге возвращает либо true, либо false. Затем в зависимости от того, что возвращает функция, распечатайте, отсортирован ли массив в main
.main
как это может не подходить для функции?Обратите внимание, что я не прошу о какой-либо помощи в отношении моего задания!
Я бы создал функцию, которая возвращает индекс последней отсортированной ячейки, поэтому, если она является последней ячейкой, все сортируется, и если она меньше, чем вы можете легко найти следующий элемент и напечатать в основном. Я не думаю, что функции должны иметь побочные эффекты (например, печать), когда они сделаны для других целей, и функция, подобная этой, которая возвращает индекс, - это то, что вы можете использовать:
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"
}
}
Я бы создал метод, который возвращает индекс первого элемента, который неправильно упорядочен:
/**
* @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()
в других частях кода, если вам нужно.