株式会社イーヴ

EeBlog(テクニカルブログ)

TOP > EeBlog > ソートアルゴリズム(3)

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

ノームソートを紹介します。

ノームソートは隣接する2つの要素を比較し、順序が正しければ次の要素へ、順序が逆であれば2つを入れ替えて前の要素へ移動する。という単純なアルゴリズムです。

sort/GnomeSort.java

package sort;

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

public class GnomeSort {

 public static void swap(List list, int index1, int index2) { 
   E t = list.get(index1); list.set(index1, list.get(index2)); list.set(index2, t);
 } 

 public static > void sort(List list) {
   int i = 0;
   while (i < (list.size() - 1)) {
     if (list.get(i).compareTo(list.get(i + 1)) > 0) {
      swap(list, i, i + 1);
      if (i != 0) {
         i--;
       }
     } else {
     i++;
     }
   }
 }

}