Недавно я написал Java-программу, которая выполняет сортировку выборки в массиве, однако, похоже, она не возвращает правильный вывод.Что я делаю не так?
Требуемый вывод: [2.0, 3.7, 6.2, 7.4, 8.1, 8.5, 9.9, 15.7]
Фактический вывод: [7.4, 2.0, 3.7, 6.2,8.1, 8.5, 9.9, 15.7]
Объяснение кода: метод findMax находит индекс самого большого объекта в массиве, а процесс метода использует метод findMax, чтобы найти индекс наибольшего числа и заменить егос последним, вторым по последнему, третьим с последним и т. д., чтобы упорядочить массив.
Мой код:
import java.util.Arrays;
import java.io.*;
public class Driver01
{
public static void main(String[] args)
{
//input
double[] myArray = {2.0, 3.7, 9.9, 8.1, 8.5, 7.4, 15.7, 6.2};
//sort the array
double[] sorted = process(myArray);
//output
System.out.println(Arrays.toString(sorted));
}
private static int findMax( int EndIndex, double[] enterArray) {
double max = 0;
int trueIndex = 0;
for( int x = 0; x < EndIndex; x++) {
if(enterArray[x] > max) {
max = enterArray[x];
trueIndex = x;
}
}
return trueIndex;
}
private static void swap(int swap1, int swap2, double[] enterArray) {
double temp = 0;
temp = enterArray[swap1];
enterArray[swap1] = enterArray[swap2];
enterArray[swap2] = temp;
}
private static double[] process(double[] enterArray) {
int range = enterArray.length -1;
for( int x = 0; x < enterArray.length; x++) {
int j = findMax(range, enterArray);
swap(j, range, enterArray);
range = range -1;
}
return enterArray;
}
}