好吧,这是一个 Java 类,但我不是在找人写代码,只是帮我调试这个。我想输入 10 个整数,并在输入和显示时按升序对输入进行排序,数组中不存在任何零 (0)。
作业的示例:
输入 10 个整数 - 一次一个......
输入整数#1:21
已排序数字:21
输入整数#2:48
已排序数字:21 48
输入整数#3:37
已排序数字:21 37 48 等等....
我尝试过选择排序、插入排序和冒泡排序,但数组无法容纳或显示超过 5 个数字。
帮助。
这是我的主要内容:
import java.util.*;
public class Main {
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner (System.in);
int j = 1;
int[] list = new int[10];
System.out.println("Enter 10 integers - one at a time...");
for (int i = 0; i < list.length; i++){
System.out.print("Enter integer #" + j + ": ");
list[i] = input.nextInt();
j++;
//SortMethod.sort(list, list.length);
SelectionSort.sort(list);
//BubbleSort.sort(list);
System.out.print("Sorted numbers: ");
for(int p= 0; p<list.length; p++){
if (list[p] !=0)
System.out.print(list[p] + " ");
}
System.out.print("\n");
}
System.out.println("Done!");
}
}
这是我的选择排序:
public class SelectionSort {
public static void sort (int[] list){
for(int i=0; i<list.length; i++)
{
for(int j=i+1; j<list.length; j++)
{
if(list[i] > list[j] )
{
int temp = list[j];
list[j] = list[i];
list[i] = temp;
}
}
}
}
}
提前致谢!
最佳答案
为什么不使用 List
而不是 jdk 中的数组和现成的排序实现 -> Collections.sort()
?
无论如何,问题是您将新整数插入到已经排序的数组中,这会导致代码出现故障。因此,当您在索引 0、1、2、3、4 上插入新元素时,排序算法会将它们移动到位置 5、6、7、8、9。从此时起,您的输入开始用输入中的新值覆盖排序值 - (主循环 i>=5)。总而言之,它接受 10 个整数,但请覆盖其中 5 个。
这是你的作品的小修改版本,它可以按照你想要的方式工作。分析一下!
import java.util.*;
public class test {
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
int j = 1;
int[] list = new int[11];
System.out.println("Enter 10 integers - one at a time...");
for (int i = 0; i < list.length - 1; i++) {
System.out.print("Enter integer #" + j + ": ");
list[0] = input.nextInt();
j++;
//SortMethod.sort(list, list.length);
SelectionSort.sort(list);
//BubbleSort.sort(list);
System.out.print("Sorted numbers: ");
for (int p = 1; p < list.length; p++) {
if (list[p] != 0)
System.out.print(list[p] + " ");
}
System.out.print("\n");
}
System.out.println("Done!");
}
}
class SelectionSort {
public static void sort(int[] list) {
for (int i = 0; i < list.length; i++) {
for (int j = i + 1; j < list.length; j++) {
if (list[i] > list[j]) {
int temp = list[j];
list[j] = list[i];
list[i] = temp;
i--;
break;
}
}
}
}
}
关于java - 在选择排序项目中,10 个元素的数组仅接受 5 个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19558027/