株式会社イーブ|未経験・転職の方も就職可能。Javaプログラマー育成のエキスパート

HOMEJAVA技術者育成システム開発求人情報個人情報保護

ソートアルゴリズム(4)

トップページ > Java技術者育成 > アルゴリズム > ソートアルゴリズム(4)

今回は選択ソートを紹介します。

選択ソートのアルゴリズムは最初の要素から順に最後の要素まで調べて一番小さい値(昇順の場合)を一番最初の要素と入れ替え、今度は2つ目の要素から最後の要素まで調べて一番小さい値を2番目の要素と入れ替え・・・ということを最後まで繰り返す、というものです。

これはO(n^2)のアルゴリズムで効率がとても悪いですが、アルゴリズムがとても単純で分かりやすいのが特徴です。

以下はJavaによる選択ソートアルゴリズムの実装例です。


sort/SelectionSort.java
package sort;

import java.util.List;
import java.util.ArrayList;
import java.util.Collections;

public class SelectionSort {

    private static <E> void swap(List<E> list, int index1, int index2) {
	E tmp = list.get(index1);
	list.set(index1, list.get(index2));
	list.set(index2, tmp);
    }

    public static <E extends Comparable<E>> void sort(List<E> list) {
	for (int i = 0; i < list.size(); i++) {
	    int min = i;
	    for (int j = i + 1; j < list.size(); j++) {
		if (list.get(min).compareTo(list.get(j)) > 0) {
		    min = j;
		}
	    }
	    swap(list, i, min);
	}
    }

    public static main(String[] args) {
	List<integer> list = new ArrayList<integer>();
	for (int i = 0; i < 10; i++) {
	    list.add(i, i);
	}
	Collections.shuffle(list);
	System.out.println("before sorting: " + list);
	sort(list);
	System.out.println(" after sorting: " + list);
    }

}

[アルゴリズム]内の前後の記事
ソートアルゴリズム(5)
→ ソートアルゴリズム(4)
ソートアルゴリズム(3)


■更新日時での前後の記事
10月21日 お天気
→ ソートアルゴリズム(4)
10月20日 お天気