#author("2018-09-04T22:34:27+09:00","ldap:pandora"," pandora") #author("2018-09-04T22:36:47+09:00","ldap:pandora"," pandora") [[FrontPage]] #nofollow #norelated * ''アルゴリズム'' [#of3f38bf] アルゴリズムとは、情報処理の明確な処理手順。(命題(処理)を細分し、要素的なものに分解する。) #contents * 概念 [#z78fa2ce] -停止性 処理が終わらないことがないように、必ず終着点が存在しなければならない。 処理手順は、必ず終着点が存在しなければならない。~ (どんな場合も、必ず終着点に辿りつける) -アルゴリズム+データ構造 = プログラム -- データ構造 +++ キュー構造 +++ スタック構造 +++ ハッシュテーブル +++ 木構造 ・・・etc * 基本構造 [#r3c3bc1d] - 逐次処理 順番に処理する。 &ref(algorithm1.PNG); - 反復処理 処理を繰り返し行う。 &ref(algorithm2.PNG); - 条件判定 処理を行ったり、行わなかったりする。 &ref(algorithm3.PNG); - (部品処理) 逐次処理、反復処理、条件判定の組み合わせを一つの処理にする。 &ref(algorithm4.PNG); * 手順 [#k3b28260] 命題:数値をソートせよ。ソート対象配列:5,7,8,2,1,4,9 + 並び替える手順を基本構造で定義出来るまで細分化する。 ++ ソートするには、どこから始めるかを決めることが必要。~ 逐次実行 ++ ソートするには、データの大小比較が必要。~ 条件判定 ++ ソートするには、大小比較後、データを入れ替えることが必要~ 逐次実行 ++ ソートするには、大小比較は1つの要素を全要素に対して行うことが必要。~ 反復処理 ++ ソートするには、ⅳの処理を全要素に対して行うことが必要。~ 反復処理 + フローチャートの作成 + プログラムの作成(バブルソート) #highlighter(java,number){{ import java.io.IOException; import java.util.Arrays; public class BubbleSort { public static void main(String args[]) throws IOException { int[] numArray = {5,7,8,2,1,4,9} int count = 0;// iの処理 // 配列の数だけ処理を繰り返す ⅴの処理 for (int i = 0; i < numArray.length - 1; i++) { // 配列の数だけ処理を繰り返す。 // ただし、1度ソートしたものは対象外とする。 ⅳの処理 for (int j = numArray.length - 1; j > i; j--) { // 大小比較 ⅱ if (numArray[j - 1] > numArray[j]) { // 入れ替え処理 ⅲ int tmpNum = numArray[j - 1]; numArray[j - 1] = numArray[j]; numArray[j] = tmpNum; count++; } } } } } }}