PowerPoint プレゼンテーション

システムエンジニアリング
演習(10月 8日)
復習+α
JBuilderの使い方を思い出す。
配列とGUI
再帰とマージソート
木と二分木の探索
2015/9/30
1
Javaの使い方を思い出す


2015/9/30
前期の課題はまとめておく(自分で再
利用する)
APIを活用しましょう(自作するより簡
単、安全)
2
参考文献

アルゴリズムの参考書
Javaで学ぶアルゴリズムとデータ構造,
Robert Lafore著,ソフトバンク,\4800
 Javaによるはじめてのアルゴリズム入門,
河西朝雄著,技術評論社,\2850

2015/9/30
3
配列と整列


配列とは?
整列のアルゴリズム
バブルソート
 選択ソート
 マージソート
 クイックソート


2015/9/30
整列(sort)のAPI
4
JOptionPane

入力


showInputDialog(String)
出力

showMessageDialog(null, String, String,
int)
JOptionPane.ERROR_MESSAGE
JOptionPane.INFORMATION_MESSAGE
JOptionPane.WARNING_MESSAGE
JOptionPane.QUESTION_MESSAGE
JOptionPane.PLAIN_MESSAGE
2015/9/30
5
再帰(階乗の例)

階乗
n! = n×(n-1)×…×2×1
つまり n! = n×(n-1)!

2015/9/30
プログラム
public long factorial (long n) {
if (n <= 1) return 1;
else return n * factorial(n – 1);
}
6
5!
5!
5! = 5*24 = 120が返る
5*4!
5*4!
4! = 4*6 = 24が返る
4*3!
4*3!
3! = 3*2 = 6が返る
3*2!
3*2!
2! = 2*1 = 2が返る
2*1!
2*1!
1が返る
1
2015/9/30
1
7
マージソート
{ 4, 2, 5, 7, 3, 6, 1, 9 }
{ 4, 2, 5, 7 } + { 3, 6, 1, 9 }
{ 4, 2 } + { 5, 7 } + { 3, 6 } + {1, 9 }
{4}+{2}+{5}+{7}+{3}+{6}+{1}+
{9}
{ 2, 4 } + { 5, 7 } + { 3, 6 } + {1, 9 }
{ 2, 4, 5, 7 } + { 1, 3, 6, 9 }
{ 1, 2, 3, 4, 5, 6, 7, 9 }
2015/9/30
8
二分木巡回

先行順巡回




中間順巡回




左部分木を巡回
根を訪問
右部分木を巡回
後行順巡回



2015/9/30
根を訪問
左部分木を巡回
右部分木を巡回
左部分木を巡回
右部分木を巡回
根を訪問
9
例:こんな感じで…

2015/9/30
先行順巡回
public static void preorder(binaryTree t) {
if (t != null) {
System.out.print(“ “ + t.node);
preorder(t.left);
preorder(t.right);
}
}
10
深さ優先と幅優先探索



ポインターでつながっていない。
キューとスタックを使って、レベルを覚
えておかなければならない!
腕に憶えのある人は挑戦しよう!
頑張ってね!
2015/9/30
11