归并排序算法笔记
来源:互联网 发布:苏州大学网络网上缴费 编辑:程序博客网 时间:2024/06/05 20:58
1,思想:采用先化整为零,然后合零为整的思想。即先把序列一分为二,再把子序列一分为二,依次下去直到不能再分割即到子序列只有一个元素。最后将分割的子序列使用合并排序。
2,效率:空间复杂度加倍;时间复杂度为N*logN,与快速排序,基数排序相同。
3,Java代码的递归实现:
public class MergeSorter {public static void mergeSort(int[] array) {int[] workArray = new int[array.length];recMergeImpl(workArray, array, 0, array.length - 1);}private static void recMergeImpl(int[] workArray, int[] array, int left,int right) {if (left == right) {return;// just have one element,return from recusive.}int mid = (left + right) / 2;recMergeImpl(workArray, array, left, mid);recMergeImpl(workArray, array, mid + 1, right);merge(workArray, array, left, mid, right);}/** * merge two child seq. * * @param workArray * @param array * @param leftPtr * @param rightPtr * @param rightBound */private static void merge(int[] workArray, int[] array, int left, int mid,int right) {int j = 0;int leftPtr = left;int rightPtr = mid + 1;while (leftPtr <= mid && rightPtr <= right) {if (array[leftPtr] < array[rightPtr])workArray[j++] = array[leftPtr++];// copy element to work array.elseworkArray[j++] = array[rightPtr++];// copy element to work// array.}while (leftPtr <= mid) {// right finish,but left still left element.workArray[j++] = array[leftPtr++];}while (rightPtr <= right) {// left finish,but right still left element.workArray[j++] = array[rightPtr++];}int workElementsLen = right - left + 1;for (j = 0; j < workElementsLen; j++) {// copy workArray sorted element// to source array.array[left + j] = workArray[j];}}}
0 0
- 算法笔记--归并排序
- 归并排序算法笔记
- 算法学习笔记----归并排序
- 算法笔记之归并排序
- 归并排序算法学习笔记
- 算法笔记三:归并排序
- 算法学习笔记--归并排序
- 算法笔记2——归并排序
- 基础算法学习笔记—归并排序
- 算法导论笔记——归并排序
- 归并排序-《算法导论》学习笔记二
- 算法笔记之插入、归并排序
- 《算法导论》学习笔记:归并排序
- 《算法》阅读笔记-2.2归并排序
- 排序算法-归并排序
- 排序算法------归并排序
- 排序算法-归并排序
- 排序算法---归并排序
- undefined reference to `libiconv_open'
- hdoj-1289-A Bug's Life【种类并查集】
- laravel陌生知识点快速学习(一)
- Java设计模式——六大原则
- 远程连接mysql 授权方法详解
- 归并排序算法笔记
- eclipse快捷键大全
- as插件Parcelable介绍
- 公司提成
- Unity中添加AES加密
- Option,None和Some
- 动态规划-钢条切割
- 移植MonkeyRunner的图片对比和获取子图功能的实现-UiAutomator/Robotium篇
- nbench 使用方法