Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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_Algorithm_Sorting_Terminal - Fatal编程技术网

生成数百万个随机整数作为Java程序的输入

生成数百万个随机整数作为Java程序的输入,java,algorithm,sorting,terminal,Java,Algorithm,Sorting,Terminal,我用Java编写了一些排序算法,并对小输入验证了它们的正确性。现在,我想检查它们之间的对比情况,因为需要排序的元素数量达到了数百万 所以我在台阶上找东西: 运行排序算法 询问用户想要排序的元素数(我可能输入>100万) 通过随机整数生成输入的大小 我想知道如何实现第三步,而不必重写排序算法本身。我正在使用LINUX终端运行我的代码 谢谢 有一种相当简单的方法将linux脚本的输出链接到java程序的输入。以下方法应该适合您 echo N | ./createInput.sh | java -cp

我用Java编写了一些排序算法,并对小输入验证了它们的正确性。现在,我想检查它们之间的对比情况,因为需要排序的元素数量达到了数百万

所以我在台阶上找东西:

  • 运行排序算法

  • 询问用户想要排序的元素数(我可能输入>100万)

  • 通过随机整数生成输入的大小

  • 我想知道如何实现第三步,而不必重写排序算法本身。我正在使用LINUX终端运行我的代码


    谢谢

    有一种相当简单的方法将linux脚本的输出链接到java程序的输入。以下方法应该适合您

    echo N | ./createInput.sh | java -cp "/srcpath/" packagePath/YourInputToAlgorithm
    
    其中:

  • N是要排序的元素数
  • createInput.sh是linux数字生成器(必须接受$1作为元素数)
  • YourInputToAlgorithm是java代码,它使用扫描仪读取值,然后对输入执行排序算法
  • 下面是一些非常简单的实现来说明该方法:

    Linux生成器:

    #!/bin/bash
    # Read the number of elements 
    read NUMBER_ELEMENTS
    # Must echo it to Java program
    echo $NUMBER_ELEMENTS
    # This implementation just creates number 1..NUMBER_ELEMENTS in reverse order
    until [  $NUMBER_ELEMENTS-lt 1 ]; do
        echo $NUMBER_ELEMENTS
        let NUMBER_ELEMENTS-=1
    done
    
    Java代码:

    public class ReadStdIn {
    
    public static void main(String[] args) {
        List<Integer> input = new ArrayList<Integer>();
        Scanner s = new Scanner(System.in);
        int numberElements = s.nextInt();
        while (numberElements > 0) {
            input.add(s.nextInt());
            numberElements--;
        }
        s.close();
        Collections.sort(input);   // Here you would call your algorithm
        System.out.println(input);
    }
    }
    
    按预期创建输出:

    [1, 2, 3, 4, 5]
    

    到目前为止,您尝试了什么?您的问题是什么?我已经编写了一个脚本,可以为我生成随机整数。我没有得到的是如何将此脚本的输出作为排序算法脚本的输入。如果我们对您的代码一无所知,如何建议如何从您的脚本传递值?你的算法在哪里实现?生成输入的脚本在哪里?这是否意味着该脚本不是Java语言?为什么?我要做的是:从中获取随机数,每行一个,然后使用
    BufferedReader
    LineNumberReader
    读取所需的整数行数。
    [1, 2, 3, 4, 5]