【问题标题】:Java Arrays and Bubble SortJava 数组和冒泡排序
【发布时间】:2018-10-07 01:37:58
【问题描述】:

更新!!

我已经设法让程序生成 50 个随机整数(来自 10,000 个随机 int 数组)。但是,我正在努力使冒泡排序方法对完整值(即 4579 和 3457)进行排序,而不仅仅是对单个数字(3、4、4、5、5、7、7、9)进行排序

这是我正在使用的代码:

public class RandomNumbers
{
   public static void main(String[] args)
   {
      int[] randomIntArray = new int[10000];

      for(int i = 0; i<randomIntArray.length; i++)
         randomIntArray[i] = (int)(Math.random() * 10000);

      for(int i = 0; i < 50; i++)
         System.out.println(randomIntArray[i]);

      System.out.println("Original order: ");
      for(int i = 0; i < 50; i++)
         System.out.print(randomIntArray[i] + "  ");

      IntBubbleSorter.bubbleSort(randomIntArray);

      System.out.println("\nSorted order: ");
      for(int i = 0; i < 50; i++)
         System.out.print(randomIntArray[i] + " ");

      System.out.println();
   }

}

public class IntBubbleSorter {
   public static void bubbleSort (int[] randomIntArray) {
      int lastPost;
      int index;
      int temp;

      for(lastPost = randomIntArray.length - 1; lastPost >= 0; lastPost--)
      {
         for(index = 0; index <= lastPost - 1; index++)
         {
            if(randomIntArray[index] > randomIntArray[index + 1])
            {
               temp = randomIntArray[index];
               randomIntArray[index] = randomIntArray[index + 1];
               randomIntArray[index + 1] = temp;
            }
         }
      }
   }
}

我当前的输出如下所示(为了便于阅读,缩短为 5 个整数):

Original order: 3898  6015  462  1960  8040
Sorted order: 0 1 2 2 3

【问题讨论】:

  • “无法让程序运行”是什么意思?你有错误吗?
  • 是的,我收到以下错误:IntBubbleSorter.bubbleSort(values); ^ 符号:变量 IntBubbleSorter
  • edit您的问题包含完整的堆栈跟踪
  • 我不知道那是什么意思。我是初学者。我在问题中包含的是我得到的所有信息。
  • 哦,谢谢。我现在补充一下。

标签: java arrays random bubble-sort


【解决方案1】:

首先在这个循环的main函数中:

 for(int element = 0; element < 50; element++)
          {
             values[element] = randomNumbers.nextInt(10000);
          }

您在 10,000 数组中仅创建 50 个随机数,而数组中的其他数字将默认分配为 0。

秒: 试试这条线:IntBubbleSorter.bubbleSort(values); 这一行:bubbleSort(values);

【讨论】:

  • 我仍然收到同样的错误:“java:20: error: cannot find symbol bubblesort(values); ^ symbol: method bubblesort(int[]) location: class Chapter7AHomework”
  • 确保你的文件名和包装你的主函数的类同名。
【解决方案2】:

如果您的 main 和 bubbleSort 函数位于不同的类中,请确保它们位于同一个包(文件夹)中。

randomNumbers.nextInt(10000)

表示下一个随机数应该在 0 到 10000 之间,而您只会生成 50 个随机数。

我创建了两个类,一个用于主函数,另一个用于冒泡排序。您应该将它们更改为对您有益的任何内容,但请确保它们位于同一文件夹(同一包)中

主类:

import java.util.Random;

public class MainClass {
    public static void main(String[] args)
    {
        // Initialize Array
        int [] values = new int[10000];
        Random randomNumbers = new Random();

        for(int index = 0; index < values.length; index++)
        {
            values[index] = randomNumbers.nextInt(10000);
        }

        System.out.println("Original order: ");
        for(int index = 0; index < 50; index++)
        {
            System.out.print(values[index] + "  ");
        }

        IntBubbleSorter.bubbleSort(values);

        System.out.println("\nSorted order: ");

        for(int index = 0; index < 50; index++)
        {
            System.out.print(values[index] + "  ");
        }

        System.out.println();
    }
}

IntBubbleSorter 类:

public class IntBubbleSorter {
    public static void bubbleSort (int[] array) {
        int lastPost;
        int index;
        int temp;

        for(lastPost = array.length - 1; lastPost >= 0; lastPost--)
        {
            for(index = 0; index <= lastPost - 1; index++)
            {
                if(array[index] > array[index + 1])
                {
                temp = array[index];
                array[index] = array[index + 1];
                array[index + 1] = temp;
                }
            }
        }
    }
}

【讨论】:

  • 编译并运行时,它不会打印所需的结果。对于“原始订单”,它会打印 10,000 个随机整数。然后对于“排序顺序”,它只打印从 0 到 49 的整数。
  • @SamMalone 您要求打印前 50 个数字
猜你喜欢
  • 1970-01-01
  • 2016-02-10
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
  • 1970-01-01
  • 2014-06-25
  • 2017-06-17
相关资源
最近更新 更多