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