简单工厂与策略模式实现排序测试
package org.lion.euler.study.sort;
import java.util.Arrays;
/**
* 简单工厂 + 策略模式
*
* @author lion
*
*/
public class SortContext {
public static enum SortType {SELECT, INSERT, BUBBLE, SHELL, MERGE, QUICK, RADIX, HEAP};
AbstractSort abstractSort = null;
public SortContext(SortType sortType){
switch(sortType){
case SELECT:
abstractSort = new SelectSort();
break;
case INSERT:
abstractSort = new InsertSort();
break;
case BUBBLE:
abstractSort = new BubbleSort();
break;
case SHELL:
abstractSort = new ShellSort();
break;
case MERGE:
abstractSort = new MergeSort();
break;
case QUICK:
abstractSort = new QuickSort();
break;
case RADIX:
abstractSort = new RadixSort();
break;
case HEAP:
abstractSort = new HeapSort();
break;
}
}
public void sort(Integer[] array){
Integer[] temp = Arrays.copyOf(array, array.length);
SortUtil.print(array);
abstractSort.sort(temp);
SortUtil.print(temp);
}
}
package org.lion.euler.study.sort;
import org.lion.euler.study.sort.SortContext.SortType;
public class SortTest {
private static Integer[] array = {100,55,111,23,10,24,57,21,78,65};
public static void main(String[] args) {
System.out.println("冒泡排序");
SortContext sortContext = new SortContext(SortType.BUBBLE);
sortContext.sort(array);
System.out.println("插入排序");
sortContext = new SortContext(SortType.INSERT);
sortContext.sort(array);
System.out.println("选择排序");
sortContext = new SortContext(SortType.SELECT);
sortContext.sort(array);
System.out.println("希尔排序");
sortContext = new SortContext(SortType.SHELL);
sortContext.sort(array);
System.out.println("归并排序");
sortContext = new SortContext(SortType.MERGE);
sortContext.sort(array);
System.out.println("快速排序");
sortContext = new SortContext(SortType.QUICK);
sortContext.sort(array);
System.out.println("基数排序");
sortContext = new SortContext(SortType.RADIX);
sortContext.sort(array);
System.out.println("堆排序");
sortContext = new SortContext(SortType.HEAP);
sortContext.sort(array);
}
}