归并排序非递归写法
来源:互联网 发布:鲁大师垃圾软件 编辑:程序博客网 时间:2024/06/05 10:50
void _Merge(int arr[], int* tmp, int begin1, int end1, int begin2, int end2){int index = begin1;while (begin1 <= end1&&begin2 <= end2){tmp[index++] = arr[begin1]<arr[begin2] ? arr[begin1++] : arr[begin2++];}while (begin1 <= end1){tmp[index++] = arr[begin1++];}while (begin2 <= end2){tmp[index++] = arr[begin2++];}}void MergeSort_NonR(int* A,int* tmp, int n){int step = 2;int left = 0, right = 0, mid = 0;while (step <= n){int cur = 0;while (cur + step <= n){right = cur + step-1, left = cur; mid = (left + right) / 2;_Merge(A, tmp, left, mid, mid + 1, right);cur += step;}if (cur < n - 1){ mid = (cur + n-1) / 2;_Merge(A, tmp, cur, mid, mid + 1, n);}step *= 2;}mid = (0 + n-1) / 2;_Merge(A, tmp, 0, mid, mid + 1, n - 1);}int* mergeSort(int* A, int n){if (A == NULL || n <= 0)return A;int* tmp = new int[n];memset(tmp, 0, sizeof(tmp));MergeSort_NonR(A, tmp, n);delete[] tmp;return A;}
0 0
- 归并排序非递归写法
- 归并排序 非递归
- 归并排序非递归
- 归并排序(非递归)
- 归并排序(非递归)
- 归并排序(非递归)
- 归并排序 非递归程序
- 非递归实现归并排序
- 非递归的归并排序
- 归并排序非递归算法
- 非递归的归并排序
- 非递归实现归并排序
- 归并排序非递归实现
- 归并排序-非递归版
- 归并排序(非递归)
- 非递归的归并排序
- 归并排序(非递归实现)
- 归并排序实现 递归 非递归
- freemarker用模板输出指定格式word文档
- RabbitMQ与Redis队列对比
- OJ-----表示数字
- cf 218D
- Java之split的用法与startWith的用法
- 归并排序非递归写法
- Spring IoC容器结构
- Ajax用法与区别
- FreeSWITCH 视频直播
- xx:xx,xx:xx规则的字符串怎么解析呢
- Invalid action class configuration that references an unknown class解决方案
- 排序算法(一):冒泡算法的两种基本实现及改进
- android RecyclerView浅谈
- 读JavaScript面向对象编程指南