ソートの学習では選択ソートをはじめにやるべき
配列のソートはいまさらいうまでも無いアルゴリズムですが、なぜか最初にくるアルゴリズムがバブルソートだったりするのはなぜでしょうか。正直バブルソートは直感的にわかりにくいと思います。
比較的わかりやすいのは選択ソートだと思います。「一番小さいもの探してを一番頭に持っていく、二番目に小さいものを探して二番目に持っていく、...」ものだから。
Javaで書くと以下のようになるのも自明でしょう
class Selection { private static final String names[] = { "taro", "jiro", "saburo", "shiro", "goro", }; public static void main(String[] args) { selection_sort(names); for (String name : names) System.out.println(name); } private static <T extends Comparable<T>> void selection_sort(T[] array) { for (int i = 0; i < array.length; i++) { int min = i; for (int j = i + 1; j < array.length; j++) { if (array[j].compareTo(array[min]) < 0) min = j; } swap(array, i, min); } } private static <T> void swap(T[] array, int i, int j) { T tmp = array[i]; array[i] = array[j]; array[j] = tmp; } }