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++];
}
}
}
歸併排序 MergeSort Java代碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.