如何解决难以对用户输入的 10 个数字进行排序必须使用数组和单独的排序方法
我的程序根本没有对数字进行排序。它按照最初输入的顺序显示它们。它必须从最小到最大的数字对它们进行排序。下面的代码应该找到数组中最大的数字并将其与最后一个交换。代码如下:
import java.util.Scanner;
public class maxSorttt {
public static void main(String[] args) {
double[] ten = new double[10];
Scanner input = new Scanner(System.in);
System.out.print("Enter 10 numbers: ");
for (int i = 0; i < ten.length; i++)
ten[i] = input.nextDouble();
sort(ten);
}
public static void sort(double[] array) {
for (int i = array.length - 1; i < 0; i--) {
double currentMax = array[i];
int currentMaxIndex = i;
for (int x = i - 1; x < -1; x--) {
if (currentMax < array[x]) {
currentMax = array[x];
currentMaxIndex = x;
}
}
if (currentMaxIndex != i) {
array[currentMaxIndex] = array[i];
array[i] = currentMax;
}
}
for (int i = 0; i < array.length; i++)
System.out.print(array[i] + " ");
}
}
解决方法
我相信你的问题在这里:
for(int i=array.length-1; i<0; i--)
array.length 不小于 0,所以 for 循环永远不会运行。你可能想要
for(int i=array.length-1; i>=0; i--)
,
简单点!
public static void selectionSort(double[] arr) {
for (int i = 0; i + 1 < arr.length; i++) {
int minIndex = findMinIndex(arr,i + 1);
if (Double.compare(arr[i],arr[minIndex]) > 0)
swap(arr,i,minIndex);
}
}
private static int findMinIndex(double[] arr,int i) {
int minIndex = i;
for (; i < arr.length; i++)
if (Double.compare(arr[i],arr[minIndex]) < 0)
minIndex = i;
return minIndex;
}
private static void swap(double[] arr,int i,int j) {
double tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。