在Java中不使用内置排序方法动态排序用户输入
我正在尝试对一些由空格分隔的用户输入的整数进行排序 输入:4 2 1 5 9 --预期产出:1 2 4 5 9 我不知道在用户在循环中按enter键(其中I在Java中不使用内置排序方法动态排序用户输入,java,sorting,for-loop,bubble-sort,Java,Sorting,For Loop,Bubble Sort,我正在尝试对一些由空格分隔的用户输入的整数进行排序 输入:4 2 1 5 9 --预期产出:1 2 4 5 9 我不知道在用户在循环中按enter键(其中I
class javasort {
public static void main(String[] args) {
int num, i, j, temp;
Scanner input = new Scanner(System.in);
// System.out.println("Enter the number of integers to sort:");
// num = input.nextInt();
num = 5; // <-- the user input should be dynamic
int array[] = new int[num];
System.out.println("Enter integers: ");
for (i = 0; i < num; i++)
array[i] = Integer.parseInt(input.next());
num = i; // make array as big as input ?
for (i = 0; i < (num - 1); i++) {
for (j = 0; j < num - i - 1; j++) {
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
System.out.println("Sorted list of integers:");
for (i = 0; i < num; i++)
System.out.println(array[i]);
}}
类javasort{
公共静态void main(字符串[]args){
int num,i,j,temp;
扫描仪输入=新扫描仪(System.in);
//System.out.println(“输入要排序的整数数:”);
//num=input.nextInt();
num=5;//数组[j+1]){
温度=阵列[j];
数组[j]=数组[j+1];
阵列[j+1]=温度;
}
}
}
System.out.println(“整数排序列表:”);
对于(i=0;iScanner.nextInt()
num = input.nextInt(); // <-- get the count.
int array[] = new int[num];
System.out.println("Enter integers: ");
for (i = 0; i < num; i++) { // <-- don't rely on indentation for flow control.
array[i] = input.nextInt(); // <-- get a number "num" times.
}
num=input.nextInt();// 如此简单,却又如此高效:
Arrays.sort(array);
您可以使用气泡排序
算法。它在最坏的情况下运行o(n^2)。不必把代码放在这里,你可以做到。只需要不到20行。您缺少一对花括号。第一个循环的主体由一条且仅由一条语句组成。建议:对于if
语句和循环体,请始终使用大括号。如果这是预期的循环,则它是可疑的。如果num=i
,然后i==num
,因此i
为false,循环将在一次迭代后结束。行num=i应删除代码>num
是5,你想从输入中读取5个数字。如果你想在每次“找到”一个新数字时更改数组的大小,那么仅仅更改num
是无法实现的。@RudyVelthuis数组大小应该是动态的。我投了5分,因为我无法让它以其他方式工作。请看我之前的评论。这不是更改数组大小的方法。你什么时候停止阅读输入?我明白。但我希望输入和输出像这样:4 2 1 5 9——预期输出:1 2 4 5 9,而不是在每个数字后都按enter键。第一个输入必须是数字计数。所以,54219应该做。是的,我知道。但我正在寻找一个动态数组。用户不必指定需要输入的长度。此修复程序不适用于5 4或55 77 11如果Java数组具有固定长度,则可以使用集合
;或者,您必须复制数组以添加新元素。此外,您还需要某种方式来指示输入已完成。你不使用内置方法的要求将使这变得非常困难。祝你好运!我不能使用数组.sort。这就是我不使用内置库的意思。因为:Scanner、System和Integer都是内置库