您的位置:首页 > 其它

MergeSort 归并排序

2013-09-06 14:48 316 查看
实现:

二路归并

public class TestMergeSort {

public int[] mergeSortArray(int[] arr, int left, int right){
if(left >= right) return null;

int mid = (left+right)/2;
mergeSortArray(arr, left, mid);
mergeSortArray(arr, mid+1, right);

merge(arr, left, mid, right);
return arr;
}

public int[] merge(int[] arr, int left, int mid,  int right){
int[] temp = new int[arr.length];
int r1 = mid +1;
int tIndex = left;
int cIndex = left;

while(left<=mid && r1<=right){
if(arr[left] <= arr[r1]){
temp[tIndex++] = arr[left++];
}else{
temp[tIndex++] = arr[r1++];
}
}

while(left <= mid){
temp[tIndex++] = arr[left++];
}

while(r1<=right){
temp[tIndex++] = arr[r1++];
}

while(cIndex <= right){
arr[cIndex] = temp[cIndex];
cIndex++;
}

return arr;
}

public static void main(String[] args) {
int[] arr = {6,2,4,1,5,9};
TestMergeSort test = new TestMergeSort();
test.mergeSortArray(arr, 0, arr.length -1);

for(int i = 0 ; i < arr.length; i ++){
System.out.println(arr[i]);
}
}

}


这个哥哥讲的不错,跟他学习了:

http://www.cnblogs.com/shudonghe/archive/2013/09/05/3302888.html

这个可以看看:

/content/4929416.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: