排序算法05:归并排序
来源:互联网 发布:网络教学信息技术应用 编辑:程序博客网 时间:2024/06/14 11:33
归并排序(MergeSort)
#include "MergeSort.h"void Merge(int A[], int Start, int Mid, int End){int n1 = Mid - Start + 1;int n2 = End - Mid;int *Left = (int*)malloc(n1 * sizeof(int));int *Right = (int*)malloc(n2 * sizeof(int));int i, j, k;for(i = 0; i < n1; i++)Left[i] = A[Start + i];for(j = 0; j < n2; j++)Right[j] = A[Mid + 1 + j];i = j = 0;k = Start;while(i < n1 && j < n2){if(Left[i] < Right[j])A[k++] = Left[i++];elseA[k++] = Right[j++];}while(i < n1)A[k++] = Left[i++];while(j < n2)A[k++] = Right[j++];}void MergeSort(int A[], int N, int Start, int End){int Mid;if(Start < End){Mid = (Start + End) / 2;/*printf("sort (%d-%d, %d-%d) ", Start, Mid, Mid + 1, End);for(int c = 0; c < N; c++){printf("%d ", A[c]);}printf("\n");*/MergeSort(A, N, Start, Mid);MergeSort(A, N, Mid + 1, End);Merge(A, Start, Mid, End);/*printf("merge (%d-%d, %d-%d) ", Start, Mid, Mid + 1, End);for(int c = 0; c < N; c++){printf("%d ", A[c]);}printf("\n");*/}}
耗时 Time = 27ms。
- 排序算法05:归并排序
- 排序算法05:归并排序
- 排序算法05:归并排序
- 排序算法-归并排序
- 排序算法------归并排序
- 排序算法-归并排序
- 排序算法---归并排序
- 排序算法--归并排序
- 排序算法--归并排序
- 排序算法-归并排序
- 排序算法--归并排序
- 排序算法--归并排序
- 排序算法:归并排序
- 排序算法-归并排序
- 排序算法:归并排序
- 【排序算法】归并排序
- 排序算法--归并排序
- 排序算法-归并排序
- 网络文章的转载备份
- 将VIM打造为IDE
- .net时间比较
- 管理权限和角色
- 向数据表批量导入数据
- 排序算法05:归并排序
- Oracle Connect By用法
- log4j.properties配置详解
- Ubuntu10.04 地址栏不见了
- Android中的网络时间同步
- Android 开启闪光灯做手电筒
- 生成静态页
- 报错Cannot create PoolableConnectionFactory
- 关于tomcat下的work目录