归并排序
2015-09-20 10:48
232 查看
原文链接:/article/1389269.html
void MergeArray(int *a,int first,int mid,int last,int temp){ int i = first,j = mid + a; int m = mid,n = last; while(i <= m && j <= n){ if(a[i] < a[j]) temp[k++] = a[i++]; else temp[k++] = a[j++]; } while(i <= m) temp[k++] = a[i++]; while(j <= n) temp[k++] = a[j++]; for(i = 0;i < k;i++) a[first + i] = temp[i]; } void MergeSortStep(int *a,int first,int last,int *temp){ if(first < last){ int mid = (first + last) / 2; MergeSortStep(a,first,mid - 1,temp); MergeSortStep(a,mid + 1,last,temp); MergeArray(a,first,mid,last,temp); } } bool MergeSort(int *a,int n){ int *p = new int ; if(p == NULL) return false; MergeSortStep(a,0,n - 1,p); return true; }
相关文章推荐
- iOS面试题第一波
- Context
- MYSQL线程池总结(一)
- 长春和沈阳网络赛的DP
- Android 一般动画Animation和属性动画Animator
- 根据二叉树的中序和后序还原二叉树
- Java中的数据库处理—增删改查
- LeetCode -- Lowest Common Ancestor of a Binary Search Tree
- 如何出色的研究 RGSS3 (三) 形式的调整的细节
- ios9关于http不能正常使用的解决方法
- 内部类
- 菜单
- Calendar_Date_String三者的转换
- zoj 3819(2014牡丹江现场赛 A题 )
- cocos2dX——HelloGame项目的创建
- C/C++中二维数组和指针关系分析
- 机房收费系统——编写思路
- jsp标签&EL表达式
- 通知
- Lecture3-1Learning with different output space