Java 排序数组
大家好,我的程序有问题。我必须调用类并在主参数中写入或不写入数字,以告知将打印多少数字,并且它们必须是最大的数字。问题是,当我打印几个随机数时,如果它们相等或是一些负数,它们只显示一次,有时它们不是最大的。如果不清楚,我将发布代码和示例Java 排序数组,java,Java,大家好,我的程序有问题。我必须调用类并在主参数中写入或不写入数字,以告知将打印多少数字,并且它们必须是最大的数字。问题是,当我打印几个随机数时,如果它们相等或是一些负数,它们只显示一次,有时它们不是最大的。如果不清楚,我将发布代码和示例 for(a = 0; a < array.length; a++){ for(b = 0; b < array.length-1; b++){ if(array[b] > array[b+1]){
for(a = 0; a < array.length; a++){
for(b = 0; b < array.length-1; b++){
if(array[b] > array[b+1]){
aux = array[b];
array[b] = array[b+1];
array[b+1] = aux;
}
(a=0;a
对于(b=0;b数组[b+1]){
aux=阵列[b];
数组[b]=数组[b+1];
阵列[b+1]=aux;
}
我用这个代码对它们进行排序,但我不知道它是否正确。
ps:我不能只使用简单的逻辑来使用排序方法或对象。通过遍历代码来了解代码的功能 问题是,如果要从最高到最低排序,应该使用if(array[b]
b = 0 and array.length = 4
array[b] = 1 and array[b+1] = 2
1 is less than 2, so nothing changes
b = 1 and array.length = 4
array[b] = 2 and array[b+1] = 3
2 is less than 3, so nothing changes
b = 2 and array.length = 4
array[b] = 3 and array[b+1] = 5
3 is less than 5 so nothing changes
第二个内环:
b = 0 and array.length = 4
array[b] = 1 and array[b+1] = 2
1 is less than 2, so nothing changes
b = 1 and array.length = 4
array[b] = 2 and array[b+1] = 3
2 is less than 3, so nothing changes
b = 2 and array.length = 4
array[b] = 3 and array[b+1] = 5
3 is less than 5 so nothing changes
第三个内环:
b = 0 and array.length = 4
array[b] = 1 and array[b+1] = 2
1 is less than 2, so nothing changes
b = 1 and array.length = 4
array[b] = 2 and array[b+1] = 3
2 is less than 3, so nothing changes
b = 2 and array.length = 4
array[b] = 3 and array[b+1] = 5
3 is less than 5 so nothing changes
以此类推。这应该可以清楚地表明排序是错误的,你的星座需要改变
现在,为了将其正确地实现为冒泡排序,您也不应该麻烦对每次迭代中查看的最后一个元素进行排序。正确的冒泡排序如下所示:
for (int a = 0; a < thisArray.length(); a++){
for (int b = 0; b < (thisArray.length() - a - 1); b++{
if (thisArray[b] < thisArray[b+1]){
holder = thisArray[b+1];
thisArray[b+1] = thisArray[b];
thisArray[b] = holder;
}
}
}
for(int a=0;a
如果你想知道这比你现在做的更好,请阅读bubble sort wiki页面。其要点是,最大的数字总是会移到后面,因此我们不需要一直查看它以确保它是最大的数字
我想你遗漏了一些括号 首先,比较
if(array[b]>array[b+1])
将从低到高排序。如果希望从高到低,则需要更改为if(array[b]
下面是将数组从高到低排序的代码
for(inta=0;a
顺便说一句,这是冒泡排序。你为什么不实施一些排序算法呢?比如合并排序或快速排序?我不能使用冒泡排序和其他东西只是循环。因此,你使用的冒泡排序只是实施得不太对至少有六种排序算法,你确定不允许使用吗?试试看了解它们是如何工作的,然后您可以自己实施它们。