« 経済学という教養 | トップページ | ちびせん »

2004/04/13

ソート

こういうのもちゃんと身に付けないとねー。

いろいろなソートアルゴリズム
Javaでの実装。

sort (整列)
Cでの実装。

C言語
C言語自体の概説だけど、ソートアルゴリズムが図解説明されていていいかも。

なんでこんなことやっているかというと、師匠に教わったCreating TreeTables in Swingの便利なツリーテーブルのサンプルコードで、ファイル・ディレクトリ名のソートをわざわざマージソート実装してやっていて、興味を持ったのでした。
今はjava.util.Arraysでそのサンプルでやっているのとは同等のことが出来るので、自分で書かなくていいのだが、ただこのサンプルで付いてきたMergeSortクラスの利点は、大小比較のところを自分で実装出来るというところ。なので、自分でディレクトリを先に持ってくるような仕様に変えてみたりしたのでした。

こんな感じ。元のは最後のreturn文のみ(あと、MergeSortに渡すObject[]を、String[]からFile[]に変えてある)。
---
public int compareElementsAt(int a, int b) {
boolean isDirectoryA = ((File)toSort[a]).isDirectory();
boolean isDirectoryB = ((File)toSort[b]).isDirectory();

if (isDirectoryA && ! isDirectoryB) {
return -1;

} else if (!isDirectoryA && isDirectoryB) {
return 1;

//両方ディレクトリもしくは両方ファイル
} else {
return (((File)toSort[a]).getName()).compareTo(((File)toSort[b]).getName());
}
}
---

で、さらに突っ込んでアルゴリズムを理解しようとしたのだが、コードだけではむずいっすね。腐った脳味噌にはきつかった。
という次第。

|

« 経済学という教養 | トップページ | ちびせん »

system engineering」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/3241/435353

この記事へのトラックバック一覧です: ソート:

« 経済学という教養 | トップページ | ちびせん »