Strategy 패턴 소스 (셀 정렬 알고리즘 포함)
import java.util.Comparator;
public class Sorters
{
/** 셀 정렬 구현. */
public static void shellSort(Object[] base, Comparator compareStrategy)
{
int i, j;
int gap;
Object p1, p2;
for(gap=1; gap <= base.length; gap = 3*gap + 1)
;
for( gap /= 3; gap > 0 ; gap /= 3)
for( i = gap; i < base.length; i++ )
for( j = i-gap; j >= 0 ; j -= gap )
{
if( compareStrategy.compare( base[j], base[j+gap] ) <= 0)
break;
Object t = base[j];
base[j] = base[j+gap];
base[j+gap] = t;
}
}
// ...
public static void main( String[] args )
{
String array[] = { "b", "d", "e", "a", "e" };
Sorters.shellSort(
array,
new Comparator()
{
public int compare( Object o1, Object o2 )
{
// 역방향으로 정렬
return -( ((String)o1).compareTo((String)o2) );
}
}
);
for ( int i=0; i < array.length; ++i )
System.out.println( array[i] );
}
}