package sortAlgorithms;
/*
* @author x@j
* @date 2013-10-01
* @content MergeSort
* 归并排序(Merge sort)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。
* */
public class MergeSort<E extends Comparable<E>> extends Sort<E> {
public static void main(String[] args) {
MergeSort<Integer> is=new MergeSort<Integer>();
Integer[] a={49,38,65,97,76,13,27,49};
is.sort(a);
}
@Override
public void sort(E[] a, int p, int q) {
System.out.print("Merge sort初始序列为");
printArray(a);
for(int i=p;i<q;i++){
int position=i;
for(int j=i+1;j<a.length;j++){
if(a[j].compareTo(a[position])<0){
position=j;
}
}
swap(a,i,position);
System.out.print("第 "+i+ "趟排序结果为");
printArray(a);
}
}
}
/*
Merge sort初始序列为 49 38 65 97 76 13 27 49
第 0趟排序结果为 13 38 65 97 76 49 27 49
第 1趟排序结果为 13 27 65 97 76 49 38 49
第 2趟排序结果为 13 27 38 97 76 49 65 49
第 3趟排序结果为 13 27 38 49 76 97 65 49
第 4趟排序结果为 13 27 38 49 49 97 65 76
第 5趟排序结果为 13 27 38 49 49 65 97 76
第 6趟排序结果为 13 27 38 49 49 65 76 97
*/