Напишите метод selectionSortDescendTrace () void, который принимает целочисленный массив и сортирует массив в порядке убывания. Метод должен использовать вложенные циклы и выводить массив после каждой итерации внешнего цикла, таким образом выводя массив N-1 раз (где N - размер). Завершите main (), чтобы прочитать список до 10 положительных целых чисел (заканчивающихся на -1), а затем вызовите метод selectionSortDescendTrace ().
Если ввод:
20 10 30 40 -1
тогда вывод:
40 10 30 20
40 30 10 20
40 30 20 10
Мой код:
import java.util.Scanner;
public class MyProgram {
public static void selectionSortDescendTrace( int [] numbers, int numElements)
{
for (int i = 0; i < numbers.length - 1; i++) {
if(numbers[i] > 0) {
int maxElementIndex = i;
for (int j = i + 1; j < numbers.length; j++) {
if (numbers[maxElementIndex] < numbers[j]) {
maxElementIndex = j;
}
}
int temp = numbers[i];
numbers[i] = numbers[maxElementIndex];
numbers[maxElementIndex] = temp;
for (int element: numbers) {
if(element > 0)
System.out.print(element + " ");
}
System.out.println("");
}
}
}
public static void main(String[] args){
Scanner scnr = new Scanner(System.in);
int input, i = 0;
int numElements = 0;
int [] numbers = new int[10];
do{
input = scnr.nextInt();
if(input != -1){
numbers[i] = input;
i++;
numElements++;
}
}while(input != -1);
selectionSortDescendTrace(numbers, numElements);
}
}
Мой вывод:
40 10 30 20
40 30 10 20
40 30 20 10
40 30 20 10
Я не уверен, почему последняя строка повторяется дважды ... Пожалуйста, помогите.