排序算法的数组实现 -- 合并排序(三)
2012-06-12 17:06
162 查看
static const int Sentinel_Card = 100000;//哨兵,假设元素值都比它小 void static Merger(int *a, int p, int q, int r) { int L_Size = q - p + 1; int R_Size = r - q; int *a1 = new int[L_Size + 1]; int *a2 = new int[R_Size + 1]; for (int i = 0; i < L_Size; i++) a1[i] = a[p + i]; a1[L_Size] = Sentinel_Card; for (int i = 0; i < R_Size; i++) { a2[i] = a[q + 1 + i]; } a2[R_Size] = Sentinel_Card; int m = 0, n = 0; for (int i = p; i <= r; i ++) { if(a1[m] < a2 ) { a[i] = a1[m]; m++; } else { a[i] = a2 ; n++; } } } void Merger_Sort(int *a, int p, int r) { if(p < r) { int q = (p + r)/2; Merger_Sort(a, p, q); Merger_Sort(a, q + 1, r); Merger(a, p, q, r); } }
相关文章推荐
- 实现两有序数组的合并仍为新有序数组,且不对新数组排序的最简单方法
- Java实现-合并排序数组
- 实现一个排序算法,对0~n-1范围内的n个不重复的无序数组进行排序,时间复杂度为O(n),空间复杂度为O(1)。
- 基于php实现随机合并数组并排序(原排序)
- 剑指offer面试题java实现之题4之相关题目:两个排序数组合并
- [置顶] 各种常用的排序算法实现对数组的排序——整理总结(代码实现)
- 基于php实现随机合并数组并排序(原排序)
- [转载]:合并两个已排序好的int数组,并排序返回c#实现
- 两个有序数组的合并排序,Java代码实现,并去重复,考虑空间利用率问题
- JavaScript中数组的合并以及排序实现示例
- PHP简单实现多维数组合并与排序功能示例
- 【Java实现】给出两个整型数组,将他们合并后从小到大排序并输出
- JavaScript中数组的合并以及排序实现示例
- 两个有序数组的合并排序,Java代码实现,并去重复,考虑空间利用率问题
- 【LeetCode-面试算法经典-Java实现】【088-Merge Sorted Array(合并排序数组)】
- 合并两个已经排序的数组为另一个数组
- JavaScript及jquey实现多个数组的合并操作
- 【代码】模板实现双向链表的去重、拼接、合并、排序
- 《算法导论》3、合并排序实现(C++)
- 【常用排序算法】选择排序(Java实现)