我在Java中编写了一些排序算法,并验证了它们对小输入的正确性。现在,我想检查他们如何相互竞争,因为需要排序的元素数量达到数百万。
所以我一直在寻找一些步骤:
运行排序算法
询问用户想要排序的元素数量(我可能输入> 100万)
通过随机整数生成输入输入的大小。
我想知道第三步是如何实现的,不必自己重写排序算法。我正在使用LINUX终端来运行我的代码。
谢谢!
答案 0 :(得分:0)
有一种相当简单的方法将linux脚本的输出链接到java程序的输入。以下方法适合您
echo N | ./createInput.sh | java -cp "/srcpath/" packagePath/YourInputToAlgorithm
其中:
以下是用于说明该方法的非常简单的实现:
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);
}
}
一个例子:
echo 5 | ./createInput.sh | java -cp "/src/" stackoverflow/ReadStdIn
按预期创建输出:
[1, 2, 3, 4, 5]