diff --git a/src/jp/co/cis/other/Hanoi.java b/src/jp/co/cis/other/Hanoi.java index 7bff639..d3c2a60 100644 --- a/src/jp/co/cis/other/Hanoi.java +++ b/src/jp/co/cis/other/Hanoi.java @@ -12,7 +12,7 @@ public static void main(String[] args) { */ public void exec() { - move(5, "START", "GOAL", "WORK"); + move(3, "START", "GOAL", "WORK"); } /** @@ -28,16 +28,13 @@ private void move(int enban, String from, String to, String work) { // 一番下でないなら続ける // (1)一番下以外を作業用の棒に移動させる - + move(enban-1, from, work, to); // (2)一番下をGOALに移動させる System.out.println(enban + "番の円盤を" + from + "から" + to + "に移動させる"); // (3)(1)で移動させた円盤を棒を入れ替えて移動させる - + move(enban-1, work, to, from); } - - - } } diff --git a/src/jp/co/cis/search/BinaryTree.java b/src/jp/co/cis/search/BinaryTree.java index 5a462b2..996c493 100644 --- a/src/jp/co/cis/search/BinaryTree.java +++ b/src/jp/co/cis/search/BinaryTree.java @@ -13,7 +13,23 @@ public class BinaryTree { * @return */ public int search(int[] ary, int search) { - // TODO 二分木で探索する処理を実装してください。 + // 最小値のインデックス番号 + int low = 0; + // 最大値のインデックス番号 + int high = ary.length-1; + while(low <= high) { + //配列の中間の値のインデックス番号 + int mid = (low + high)/2; + //中間の要素 + int tmp = ary[mid]; + if(tmp == search) { + return mid; + }else if(tmp > search) { + high = mid - 1; + }else { + low = mid + 1; + } + } return 0; } diff --git a/src/jp/co/cis/sort/BubbleSort.java b/src/jp/co/cis/sort/BubbleSort.java index 619c4da..b4de583 100644 --- a/src/jp/co/cis/sort/BubbleSort.java +++ b/src/jp/co/cis/sort/BubbleSort.java @@ -13,7 +13,15 @@ public class BubbleSort { */ public int[] sort(int[] ary) { // TODO バブルソートで並び替える処理を実装してください。 + for(int i=1; i<= ary.length-1; i++) { + for(int j=0; j < ary.length-i; j++) { + if(ary[j] > ary[j+1]) { + int y = ary[j]; + ary[j] = ary[j+1]; + ary[j+1] = y; + } + } + } return ary; } - } diff --git a/src/jp/co/cis/sort/InsertionSort.java b/src/jp/co/cis/sort/InsertionSort.java index 58ffd8b..e3aebc4 100644 --- a/src/jp/co/cis/sort/InsertionSort.java +++ b/src/jp/co/cis/sort/InsertionSort.java @@ -13,6 +13,18 @@ public class InsertionSort { */ public int[] sort(int[] ary) { // TODO 挿入ソートで並び替える処理を実装してください。 + for(int i = 1; i < ary.length-1; i++){ + // 比較する配列のインデックスをiとする + int tmp = ary[i]; + // ary[0]まで比較を繰り返す + for(int j = i; j > 0; j--){ + //(左辺 > 右辺)のとき、入れ替える + if(ary[j] > ary[j-1]){ + ary[j] = ary[j-1]; + ary[j-1] = tmp; + } + } + } return ary; } diff --git a/src/jp/co/cis/sort/SelectionSort.java b/src/jp/co/cis/sort/SelectionSort.java index 1cbcbcb..5df39e9 100644 --- a/src/jp/co/cis/sort/SelectionSort.java +++ b/src/jp/co/cis/sort/SelectionSort.java @@ -13,6 +13,19 @@ public class SelectionSort { */ public int[] sort(int[] ary) { // TODO 選択ソートで並び替える処理を実装してください。 + for(int i = 0; i < ary.length-1; i++) { + //比較する配列のインデックス + int min = i; + //最小値を見つけ、入れ替える繰り返し + for(int j = i + 1; j < ary.length; j++) { + if(ary[min] > ary[j]) { + min = j; + } + } + int tmp = ary[i]; + ary[i] = ary[min]; + ary[min] = tmp; + } return ary; }