【问题标题】:How do i modify this to create a random array of a size i can input?我如何修改它以创建一个我可以输入的大小的随机数组?
【发布时间】:2019-11-05 13:11:33
【问题描述】:
class BubbleSort {
    void bubbleSort(int arr[]) {
        int n = arr.length;
        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    // swap arr[j+1] and arr[i]
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

    void printArray(int arr[]) {
        int n = arr.length;
        for (int i = 0; i < n; ++i) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }

    public static void main(String args[]) {
        BubbleSort ob = new BubbleSort();
        int arr[] = { 64, 34, 25, 12, 22, 11, 90 };
        ob.bubbleSort(arr);
        System.out.println("Sorted array");
        ob.printArray(arr);
    }
}

我是否必须创建一个单独的 array.util 类,然后再创建一个类来测试它? 是否可以打印冒泡排序经过的每次迭代。

【问题讨论】:

    标签: java bubble-sort


    【解决方案1】:
    public static void main(String... args){
        // Get input size
        Scanner scanner = new Scanner(System.in);
        int size = scanner.nextInt();
    
        // Create Array based on size
        int[] testArray = new int[size];
        for (int i=0; i<size; i++){
            testArray[i] = (int)(Math.random()*size);
            Sysout.out.print(testArray[i]+" ");
        }
        System.out.println();
    
        // Sort Array
        BubbleSort bs = new BubbleSort();
        bs.bubbleSort(testArray);
        bs.printArray(testArray);
    }
    

    是的,你可以输出算法的每一步,只需在排序算法中添加打印语句。

    【讨论】:

      【解决方案2】:

      您可以使用以下代码代替数组声明行int arr[] = {64, 34, 25, 12, 22, 11, 90}; 让用户输入数组大小,然后使用Java 生成随机数并填充数组。只需将int arr[] = {64, 34, 25, 12, 22, 11, 90}; 行替换为以下代码:

              Scanner inScanner = new Scanner(System.in);
              System.out.println("Enter array size: ");
      
              int arraySize = Integer.parseInt(inScanner.nextLine()); //Read the whole line and try to parse it into an Integer
              int start = 1;
              int end = 100;
              Random r = new Random();
              int arr[] = new int[arraySize];
              for (int i=0; i<arraySize; i++) {
                  arr[i]= r.nextInt((end - start) + 1) + start;
              }
      

      您可以更改开始/结束整数以对随机数生成器设置不同的限制。

      对于测试类,您可以使用 JUnit 测试框架(Jmockit、mockito 等)。

      要打印冒泡排序的每次迭代,只需在 if (arr[j] &gt; arr[j + 1]) 块内的冒泡排序方法中添加 System.out.println。

      【讨论】:

        【解决方案3】:

        您可以使用以下方法创建一个给定大小的数组,其中填充有从给定原点到给定上限的随机数:

        public static int[] createRandomNumbersArray(int size, int valMin, int valMax) {
            int[] arr = new int[size];
        
            for (int i = 0; i < size; i++) {
                arr[i] = ThreadLocalRandom.current().nextInt(valMin, valMax);
            }
        
            return arr;
        }
        

        您必须向用户询问尺寸(也可能询问其他值,但您可以自己定义它们),然后调用此方法。

        【讨论】:

          猜你喜欢
          • 2021-02-23
          • 1970-01-01
          • 2023-04-06
          • 1970-01-01
          • 2010-11-10
          • 1970-01-01
          • 2020-06-25
          • 2018-09-08
          • 1970-01-01
          相关资源
          最近更新 更多