Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 排序数组_Java - Fatal编程技术网

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]array[b+1]的作用相反,从最低到最高

您当前的代码执行以下操作:

假设我有一个数字数组:1,2,3,5

第一个内环:

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


顺便说一句,这是冒泡排序。

你为什么不实施一些排序算法呢?比如合并排序或快速排序?我不能使用冒泡排序和其他东西只是循环。因此,你使用的冒泡排序只是实施得不太对至少有六种排序算法,你确定不允许使用吗?试试看了解它们是如何工作的,然后您可以自己实施它们。