歸併排序 MergeSort Java代碼

public class MergeSort {

	public static void main(String[] args) {
		int[] data = {3,2,4,7,2,1,9,11,2,3,15};
		mergeSort(data);
		for(int num : data){
			System.out.println(num);
		}
	}
	
	public static void mergeSort(int[] data){
		doMergeSort(data, 0, data.length-1);
	}
	
	public static void doMergeSort(int[] data, int start, int end){
		if(start>=end) return;
		int center = (start + end)/2;
		doMergeSort(data, start, center);
		doMergeSort(data, center+1, end);
		merge(data, start, center, end);
	}
	
	public static void merge(int[] data, int start, int center, int end){
		int [] temp = new int[data.length];
		int low = start;
		int high = center + 1;
		int tempStart = start;
		while(low <= center && high<= end){
			if(data[low] < data[high]){
				temp[tempStart++] = data[low++];
			}else{
				temp[tempStart++] = data[high++];
			}
		}
		while(low<=center){
			temp[tempStart++] = data[low++];
		}
		while(high<=end){
			temp[tempStart++] = data[high++];
		}
		while(start<=end){
			data[start] = temp[start++];
		}
	}
	
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章