用Java写归并排序
归并排序的过程如下:
import java.util.*;
/*
* Java归并排序的练习
*/
public class MergeSort {
public void mergeSort(int[] array, int start, int end) {
if(start < end) {
int mid = (start + end) / 2;
mergeSort(array, start, mid);
mergeSort(array, mid + 1, end);
merge(array, start, mid, mid + 1, end);
}
}
public void merge(int[] array, int start1, int end1, int start2, int end2) {
int i = start1;
int j = start2;
List<Integer> list = new ArrayList<>();
while(i <= end1 && j <= end2) {
if(array[i] <= array[j]) {
list.add(array[i++]);
}else {
list.add(array[j++]);
}
}
while(i <= end1) {
list.add(array[i++]);
}
while(j <= end2) {
list.add(array[j++]);
}
for(int p = start1; p <= end2; p++) {
array[p] = list.get(p - start1);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
MergeSort m = new MergeSort();
int[] array = {19, 17, 20, 18, 16, 21};
m.mergeSort(array, 0, array.length-1);
for(int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
程序的运行结果为:
用Python写的归并排序更为简洁,参考如下:
http://blog.csdn.net/u010429424/article/details/73602374