ソートアルゴリズム(9)
今回紹介するソートアルゴリズムは奇遇転置ソートです。このソートはバブルソートを改良したアルゴリズムで、ソートではスキャンを順番に行っていましたが、奇遇転置ソートでは2つずつペアで比較を行います。
- リストの奇数番目の要素とその次の偶数番目の要素を比較し、順番に並んでいなければ入れ替える。
(リストのすべてのペアでこれを行う。) - リストの偶数番目の要素とその次の奇数番目の要素を比較し、順番に並んでいなければ入れ替える。
(リストのすべてのペアでこれを行う。) - リストが整列されるまで1. 2. を繰り返す。
OddEvenTranspositionSort.java
package sort;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
public class OddEvenTranspositionSort {
private static <E extends Comparable<E>> boolean scanPair(List<E> list, int start) {
boolean swapped = false;
for (int i = start; i < list.size() - 1; i += 2) {
if (list.get(i).compareTo(list.get(i + 1)) > 0) {
}
}
return swapped;
}
public static<E extends Comparable<E>> void sort(List<E> list) {
for (int start = 0; scanPair(list, start); start ^= 1);
}
public static void main(String args[]) {
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
list.add(i);
}
Collections.shuffle(list);
System.out.println(list);
sort(list);
System.out.println(list);
}
}

