「アルゴリズム(algorithm)」は、何らかの目的を果たすための手順や方法です。開発の世界では、数行のプログラムから大きなシステムに至るまで、大小さまざまなアルゴリズムが存在します。
現在では、便利なライブラリが各種提供されているため、自分で作成する必要もなくなってきましたが、アルゴリズム知ることでプログラミングの基礎力、応用力を養うことができます。本連載では、基礎から応用まで全10回に渡ってJavaによるアルゴリズムの例題を紹介します。プログラム経験が3ヶ月もあれば十分解くことができるでしょう。最初は腕慣らしから始まります。
問題にはポイントやヒント、さらにランク分けをした作成目安時間を書いていますので、解答例を見ずに「Aランク」を目指して挑戦してみてください。再挑戦をする場合の時間は、元の時間から-30%くらいを目安にしてください(例えば1回目が60分の場合、2回目は48分)。
- 第1回 条件分岐と永久ループ
- 第2回 条件分岐(複合条件)
- 第3回 ループ
- 第4回 多重ループと二次元配列
- 第5回 魔方陣 応用(多重ループ、条件分岐、二次元配列)
- 第6回 ソート
- 第7回 バブルソート
- 第8回 クイックソート
- 第9回 再帰処理
- 第10回 リンクリスト
対象読者
Javaのプログラミング経験が3ヶ月~2年程度の方。
所要時間のランク(A~C)は、A:(開発歴)2年以上、B:1年程度、C:3ヶ月程度を目安にしてください。前半の問題では、やや時間に余裕を持っています。なお、基礎の基礎ですので、ベテランの方には少々物足りない内容かもしれません。
ヒント:フローチャートを見る
- コマンドラインに入力を待ち受けるための「>」を表示する。
- 「EXIT」が入力された時点でプログラムを終了する。それ以外が入力された場合は「未入力です」と表示して、再び入力待ち受け状態にする。
- if文の使用法を習得する。
- while()/for(;;)による永久ループの使用法を習得する。
- 標準入力からの入力を受け取るストリームは
System
クラスのフィールドinよりInputStream
クラスのインスタンスとして取得できる。 - 永久ループは次のようにすることによって表すことができる。
while( true ) { 繰り返される処理 }
または
for( ; ; )
{
繰り返される処理
}
解答例は次のページ。