package 快速排序_歸併排序_二分查找_等排序;
public class GuiBIngSort {
public static void main(String args[]){
int[] arr = {-3,10,3,4,-1,2,5,6,7,0,1,8,9};
int[] aaa = new int[arr.length];
//Sort(arr,aaa,0,arr.length-1);
mergeSort(arr, 0 , arr.length-1);
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
public static void mergeSort(int[] a, int left, int right) {
if(left<right){
int middle = (left+right)/2;
//對左邊進行遞歸
mergeSort(a, left, middle);
//對右邊進行遞歸
mergeSort(a, middle+1, right);
//合併
merge(a,left,middle,right);
}
}
private static void merge(int[] a, int left, int middle, int right) {
int[] tmpArr = new int[a.length];
int mid = middle+1; //右邊的起始位置
int tmp = left;
int third = left;
while(left<=middle && mid<=right){
//從兩個數組中選取較小的數放入中間數組
if(a[left]<=a[mid]){
tmpArr[third++] = a[left++];
}else{
tmpArr[third++] = a[mid++];
}
}
//將剩餘的部分放入中間數組
while(left<=middle){
tmpArr[third++] = a[left++];
}
while(mid<=right){
tmpArr[third++] = a[mid++];
}
//將中間數組複製回原數組
while(tmp<=right){
a[tmp] = tmpArr[tmp++];
}
}
}
java 歸併排序(穩定)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.