dポイントプレゼントキャンペーン実施中!

テキストファイルに文字が書き込まれていて、その文をASCIIコード順に並び替えるのですがStringからintに変換してバブルソートを行えばよろしいのでしょうか
詳しくお願いいたします 1行は10文字  50行までです
別ファイルに書き込みます
sample1.txt
cfd
cad
fa

sample2.txt
・・・
・・・

A 回答 (6件)

ソートには比較関数が必要ですが、厳密な意味で ASCII 順に並び替えるのは少々面倒なので


上位互換である Unicode(UTF-16) 順に並び替える String#compareTo で代用しましょう

http://docs.oracle.com/javase/jp/6/api/java/lang …

このメソッドは、文字列を「Unicode値の順番で辞書的に」比較します
辞書的とは、辞書における項目の並べ方の様なルールです
1. 文字を UTF-16 コード値(≒ASCII)にした場合に、値が小さいほうを先にする
2. n 文字目が同じなら、n+1 文字目で判断する
3. 文字数が異なるなら、短いほうを先にする

以下サンプルです
昨今は富豪的プログラミングでもなんら問題ないので、10文字とか50行とかの制限は考慮しません

String[] lines = sample1から行単位に全部読み取り();
for (int i = 0; i < length-1; i++) {
for (int j = i+1; j < length; j++) {
if (lines[i].compareTo(lines[j]) > 0) { linesのiとjを入れ替える処理(); }
}
}
sample2に行単位に全部書き込み(lines);

// 実行結果の例
// cad ← 次行と比べて、2文字目が 'a' U+0061 < 'f' U+0066
// cfd ← 次行と比べて、1文字目が 'c' U+0063 < 'f' U+0066
// fa ← 次行と比べて、2文字目まで同じだが文字数が短い
// faa
    • good
    • 0

sample1.txt


adw31rk
wd24
r1t4



adw31rk
r1t4
sample1.txt
wd24

でよければno1の比較で良いです。
    • good
    • 0

>ASCIIコードを基準にソートするということです



文字コードで並べているので、ASCIIファイルならASCII順になりますよ。
EBCDICファイルならEBCDICコード順になります。
    • good
    • 0

>テキストファイルに<文字>が書き込まれていて


文字ソートでいいんでしょ?

c
e
b

だったら

b
c
e

になります。

99
101
98

を数字ソートしたいのですか?

あなたの例は文字ソートですが?

この回答への補足

ASCIIコードを基準にソートするということです
99とか数字を出したのは例です

補足日時:2014/05/22 14:32
    • good
    • 0

元のファイルがASCIIコードのファイルであればInputStreamReaderでUS-ASCIIでint配列に読み込んでベタに比較するのが王道でしょう。



英字の範囲であればASCIIもUNICODEも同じ並びなのでStringのcompareToでも行けるはずです。

まあ、ASCIIなんて環境依存するファイルは扱いたくはないですね。UNICODEファイルにすることをお勧めします。

この回答への補足

半角英数字のテキストファイルです
sample1.txt
adw31rk
wd24
r1t4
といった場合です
この場合、rとwを比較と言うのはどのようにすればよろしいのでしょうか

補足日時:2014/05/22 14:31
    • good
    • 0

if(str1[x].compareTo(str1[y])>0) {


String tmp=str1[x];
str1[x]=str1[y];
str1[y]=tmp;
}

String で比較して入れ替えるだけですよ。

この回答への補足

ASCIIコード順ですよ
a[0]c 99
a[1]e 101
a[2]b 98
となっていたらバブルソートで小さいものから並び替えます
これを10文字までできるプログラムです
Yama
Kai
だったら
YとKで比較してASCIIコードの小さいものに並び替えます

補足日時:2014/05/22 13:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!