まったく新しいJavaで、悪夢を抱いています!私は昇順に並べ替えることができた235886の単語shuffled.txtのリストを持っていますが、実行には一生かかるので、私は結果をtxtファイルに保存することができると考えていました。私はこれについてどうやって行くのですか?結果をtxtファイルに保存し、プリントラインを使用しないでください。
感謝の気持ちで助けられました。 歓待
public class Main {
static final int NUMWORDS = 235886;
static final String FILENAME = "shuffled.txt";
public static void main(String[] args) {
String[] words = readWords(FILENAME, NUMWORDS);
String[] myStringArray = readWords(FILENAME, NUMWORDS);
sortedWords(words);
}
// 5. Write code to build a sorted version of the list (in ascending order)
public static void sortedWords(String unsorted[]) {
sort(unsorted);
for (int n=0 ; n < unsorted.length; n++) {
System.out.println(unsorted[n]);
// return unsorted;
}
}static void sort(String[] unsorted){
for (int i =0; i< unsorted.length; i += 1) {
int j = findMinIndex(unsorted, i + 1, i);
if (j != -1) {
swap(unsorted, i, j);
}
}
}
static int findMinIndex(String[] numbers, int startIndex, int minIndex) {
if (numbers.length <= startIndex) {
return -1;
}
for (int i=startIndex; i < numbers.length; i += 1){
if (numbers[i].length() > numbers[minIndex].length()){
minIndex = i;
}
}
return minIndex;
}
static void swap(String[] numbers, int i, int j) {
String tmp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = tmp;
}
private static String[] readWords (String filename,int count){
String[] words = new String[count];
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
int i = 0;
for (String line; (line = br.readLine()) != null && i < count;) {
words[i++] = line;
}
} catch (java.io.IOException e) {
System.err.println("File: " + filename + " could not be found.");
}
return words;
}
}
、あなたはそれらを読んで同様の道を行くだろう。 'BufferedReader'の代わりにあなたは...よく。 'BufferedWriter'が必要です。ファイルに文字列/複数の文字列を書き込む方法の例については、簡単にGoogleを使用できます。 – Korashen
ファイルからの読み方を知っていれば、書き込むこともできます。そこには多くのチュートリアルがあります。しかし、あなたの主な問題は出力ではなく、むしろO(n^2)のコードの複雑さを疑うでしょう:あなたは配列全体を反復していますし、findMinIndex()良いソートアルゴリズムは、複雑さがO(log(n))の複雑さを持つ必要があります。235kワードの場合、約270億回ではなく、約300万回の反復が必要です。 ?Arrays.sort(...) 'を使用していませんか? – Thomas
未使用時に' myStringArray'にファイルを2度読み込むことはありません。 – yacc