Merge Sort归并排序
来源:互联网 发布:织梦cmspath 编辑:程序博客网 时间:2024/04/28 21:49
归并排序采用递归的思想对数组进行排序,如下图所示:
首先对于一个数组A把它分成左右两部分L、R,对于L、R再进行分割,当L、R变成有序时,再进行归并操作最后得到有序的数组A。
关于归并的部分可以写出以下的伪代码:
C = output[length = n]
A = 1st sorted array[n / 2]
B = 2nd sorted array[n / 2]
i = 1 j = 1
for k = 1 to n
if A[i] < B [j]
C[k] = A[i]
i++
else
C[k] = B[j]
j++
end
java代码如下:
public class MergeSort{public static void main(String[] args) {int [] array = {2,4,1,6,8,5,3,7};mergeSort(0, array.length-1,array);}private static void mergeSort(int low, int high, int[] array){if(low < high){int middle = low + (high - low)/2;mergeSort(low, middle, array);mergeSort(middle+1, high, array);merge(low, middle, high, array);}}private static void merge(int low, int middle, int high, int[] array){int [] helper = new int [array.length];for(int i=low; i<=high; i++)helper[i] = array[i];int i = low; int j = middle + 1; int k = low; while (i <= middle && j <= high) { if (helper[i] <= helper[j]) { array[k] = helper[i]; i++; } else { array[k] = helper[j]; j++; } k++; } while (i <= middle) { array[k] = helper[i]; k++; i++; } while (j <= high) { array[k] = helper[j]; k++; j++; }}}
0 0
- 归并排序(merge sort)
- 归并排序(Merge sort)
- 归并排序Merge-Sort
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序Merge sort
- 归并排序 (Merge Sort)
- 归并排序(Merge Sort)
- 归并排序 Merge sort
- merge sort归并排序
- 归并排序 merge sort
- 归并排序 Merge sort
- 归并排序 merge sort
- Merge Sort归并排序
- merge sort(归并排序)
- 归并排序(merge Sort)
- <context:component-scan>使用说明
- Linux 查找重复ID数据
- 编程之美2.8 找符合条件的整数
- try-catch-finally中return的执行情况
- How to install Mediaproxy 2.5.2 on CentOS 6 64 bit
- Merge Sort归并排序
- 【PHP分享】Windows tail工具分享
- 在一个框架里如何使另一个框架后退,相当于在另一个框架执行history.back()
- 判断android是否启动
- Myeclipse插件查询
- 数组的最大子串
- 不能在析构函数里面抛出异常
- 解决打开myeclipse的时候,所有项目消失的问题
- mina多文件传输