【发布时间】:2016-04-14 02:43:01
【问题描述】:
我对 Java 比较陌生,所以我必须不断地研究如何做事。我正在从事一个项目,该项目涉及分析许多熟悉的排序,例如堆排序、合并排序等。我编写了一些代码来生成各种不同的数组,每个数组都在自己的 .txt 文件中。以下是部分代码:
import java.io.*;
import java.util.Arrays;
import java.util.Collections;
public class ArrayBuilder {
public static void main(String[] args) throws IOException {
for(int i = 2; i < 7; i++) {
int aLength = (int)Math.pow(10, i);
buildAscendingArray(aLength);
buildDescendingArray(aLength);
buildRandomArray(aLength);
}
}
public static void buildAscendingArray(int arrayLength) throws IOException {
File file = new File("arrays_" + arrayLength + "A.txt");
PrintWriter printWriter = new PrintWriter(file);
int[] array = new int[arrayLength];
for(int i = 0; i < array.length; i++) {
array[i] = i + 1;
}
printWriter.println(Arrays.toString(array));
printWriter.close();
}
我没有包括随机和降序方法,因为它们或多或少相同,因此试图节省空间。所以……
我已经对所有排序进行了编码,我只是想弄清楚如何读取整数数组,以便可以通过不同的排序运行它们。我还尝试考虑添加 System.nanoTime() 以计算运行每种排序所需的时间,以便在给定各种输入的情况下比较它们。不确定是否需要将其添加到每种排序的方法中,或者是否可以在调用中实现,即。 System.nanoTime(heapsort(array))) ?
最终,我正在寻求一些帮助,以便将 .txt 文件放入可用的数组中,以便将其传递给每个排序。我首先将所有内容输出到文本文件,以确保在每个排序中运行完全相同的数组。
我对 Scanner 有点熟悉,但也读过 FileRead 和/或 BufferedReader 以及可能的其他一些方法。我只是没有足够的经验知道在这种情况下什么最有效以及实现它的最佳方法。非常感谢您的帮助。
【问题讨论】:
-
为什么要保存升序和降序数组?这种逻辑不会每次都产生相同的数组吗?
-
您真的需要文本文件还是只需要文件存储?如果只需要文件存储,您可以将数组按原样写入文件并使用 ObjectOutputStream 和 ObjectInputStream 直接读取。
-
我已经有了文本文件,这是否是最有效的处理方式无关紧要。我只是在寻求有关如何继续的帮助,而不是如何重新开始。如果有的话,在我看来,它有助于将程序的不同方面作为一个整体分离出来。
标签: java arrays sorting bufferedreader filereader