・   「Java I」実習 第7回

Javaの文法とアルゴリズムのまとめ(2)

ここまで学習した、Javaの文法とアルゴリズムについて復習しましょう。


・ 準備1(学内向け):
Linux, Windows 2000いずれの環境でもかまいません。 端末エミュレータのウィンドウを開きなさい。 各自のJavaの課題の作業用のディレクトリ java に移動しなさいなさい。 その中で以下の作業を行いなさい。


・ 基本課題1:「メソッドの再帰呼び出し」
Javaではメソッドの中でそのメソッド自身を呼び出す(再帰呼び出し)機能が 利用できます。

  1. ソースファイル CountDown.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. 実行結果を確認し、なぜその結果が得られたのか考えなさい。

・ 基本課題2:「ソートのアルゴリズム」
最も単純なソートのアルゴリズムによる staticなメソッドを提供するクラスを作ります。

  1. ソースファイル SimpleSort.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. 実行結果を確認し、なぜその結果が得られたのか考えなさい。
・ 基本課題3:「ソートのアルゴリズムの再帰呼び出しによる書き換え」
ソートのアルゴリズムを再帰呼び出しで記述してみます。

  1. ソースファイル SimpleSort2.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. 実行結果を確認し、なぜその結果が得られたのか考えなさい。

・ 基本課題4:「バブルソートのアルゴリズム」
バブルソートのアルゴリズムによる staticなメソッドを提供するクラスを作ります。

  1. ソースファイル BubbleSort.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. 実行結果を確認しなさい。

・ 今週のレポート課題(学内用):
ここまでの課題が終わった人は、下記の項目を tatsuo宛のメール で報告しなさい。(Subjectは program7)

  1. 課題2,3,4で得られた テスト用のデータの中の中央の順序(8番目)のデータの値

・ 応用課題1:「クイックソートのアルゴリズム」
クイックソートのアルゴリズムによる staticなメソッドを提供するクラスを作ります。

  1. ソースファイル QuickSort.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. 実行結果を確認しなさい。

・ 応用課題2:「マージソートのアルゴリズム」
マージソートのアルゴリズムによる staticなメソッドを提供するクラスを作ります。

  1. ソースファイル MergeSort.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. 実行結果を確認しなさい。

・ 応用課題3:「ソートのアルゴリズムの比較」
適当な個数のサンプルを自動生成させ、ソートのアルゴリズムのテストをします。

  1. ソースファイル SortTest.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. 次のように引数を与えてみて、実行結果を確認しなさい。

java SortTest s 10
java SortTest b 10
java SortTest q 10
java SortTest m 10

・ 応用課題4:「ソートの速度の比較」
配列のサイズを大きくしていった時、それぞれのアルゴリズムの処理速度 がどう変わるか調べます。

  1. 標準出力への表示は行わないように /dev/null にリダイレクトします。
    次のように引数を与えてみて、実行結果を確認します。
  2. それぞれのアルゴリズムについて、データ数が 100個、1000個、10000個、100000個 でどのくらいの差が生じるか調べなさい。
    既存のSDKのクラスライブラリにある java.util.Arraysクラスによって 提供される sort()メソッドとも比較してみなさい。

java SortTest s 100 > /dev/null
java SortTest b 100 > /dev/null
java SortTest q 100 > /dev/null
java SortTest m 100 > /dev/null
java SortTest j 100 > /dev/null


・ おまけのレポート課題(学内用):
応用課題ができた人は、下記の項目を tatsuo宛のメール で報告しなさい。(Subjectは ouyou7)

  1. 100000個の要素を持つint型の配列のソートの計算にかかった時間を 4つのソートにアルゴリズム、 SDKのjava.util.Arraysのsort()に対して求め、比較しなさい。

実習の目次   今週の講義の内容