使用java多态特性实现策略模式,复习数组的三大排序。
public class Sort{
public static void main(String [] args){
int [] array = {4,1,6,8,41,12,45,15,123};
Isort ms = new MaopaoSort();
Isort is = new InsertSort();
Isort xs = new XuanzeSort();
//Context context = new Context(ms);
//Context context = new Context(is);
Context context = new Context(xs);
context.sort(array);
context.printArray(array);
}
}
class Context{
private Isort isort = null;
public Context(Isort isort){
this.isort = isort;
}
public void sort(int [] array){
isort.sort(array);
}
public void printArray(int [] array){
for(int i=0,length=array.length; i<length; i++){
if(i==length-1){
System.out.print(" "+array[i]);
}else{
System.out.print(" "+array[i]+" ,");
}
}
}
}
interface Isort{
public void sort(int [] array);
}
class MaopaoSort implements Isort{
public void sort(int [] array){
System.out.println("this is MaopaoSort");
for(int i=0,length=array.length-1; i<length; i++){
for(int j=i+1,lengthJ=array.length-1; j<lengthJ ; j++){
if(array[j]<array[i]){
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
}
class InsertSort implements Isort{
public void sort(int [] array){
System.out.println("this is InsertSort");
for(int i=1,lengthI=array.length-1; i<lengthI; i++){
int temp,j=i;
while(j>0 && array[j]<array[j-1]){
temp = array[j];
array[j] = array[j-1];
array[j-1] = temp;
j--;
}
}
}
}
class XuanzeSort implements Isort{
public void sort(int [] array){
System.out.println("this is XuanzeSort");
for(int i=0,length=array.length; i<length; i++){
int indexMini = i,temp;
for(int j=i+1, lengthJ=array.length-1; j<lengthJ; j++){
if(array[j] < array[indexMini]){
indexMini = j;
}
}
if(indexMini != i){
temp = array[i];
array[i] = array[indexMini];
array[indexMini] = temp;
}
}
}
}