归并排序
来源:互联网 发布:2333网络语是什么意思 编辑:程序博客网 时间:2024/04/30 02:19
#include<iostream>#include<malloc.h>#include<algorithm>using namespace std;template<typename ElementType>void Merge(ElementType A[], ElementType TmpA[], int L, int R, int RightEnd);template<typename ElementType>void MSort(ElementType A[], ElementType TmpA[], int L, int RightEnd);template<typename ElementType>void Merge_sort(ElementType A[], int N);int main(){int A[10] = { 13, 23, 12, 56, 43, 20, 22, 11, 6, 8 };Merge_sort(A, 10);for (auto it = begin(A); it != end(A); it++)cout << *it << " ";system("pause");return 0;}template<typename ElementType>void Merge(ElementType A[], ElementType TmpA[], int L, int R, int RightEnd){int LeftEnd = R - 1;int Tmp = L;int NumElements = RightEnd - L + 1;while (L <= LeftEnd && R <= RightEnd){if (A[L] <= A[R]) TmpA[Tmp++] = A[L++];else TmpA[Tmp++] = A[R++];}while (L <= LeftEnd)TmpA[Tmp++] = A[L++];while (R <= RightEnd)TmpA[Tmp++] = A[R++];for (int i = 0; i < NumElements; i++, RightEnd--)A[RightEnd] = TmpA[RightEnd];}template<typename ElementType>void MSort(ElementType A[], ElementType TmpA[], int L, int RightEnd){int Center;if (L < RightEnd){Center = (L + RightEnd) / 2;MSort(A, TmpA, L, Center);MSort(A, TmpA, Center + 1, RightEnd);Merge(A, TmpA, L, Center + 1, RightEnd);}}template<typename ElementType>void Merge_sort(ElementType A[], int N){ElementType *TmpA;TmpA = (ElementType *)malloc(N *sizeof(ElementType));if (TmpA != NULL){MSort(A, TmpA, 0, N - 1);}else{cout << "No enough space";}}
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- Netty5入门(3)
- a+b问题(1000)
- C++ 指针详解(2)
- 郑州社保查询路径
- 【Android问题】解决 Android SDK下载和更新失败“Connection to https://dl-ssl.google.com refused”的问题
- 归并排序
- C++检测空字符串
- Linux_Screen 之共享屏幕
- HTML5 知识总结
- STC12C56XX的时钟周期
- 多线程开发
- Hbase的Eclipse连接测试
- C#中OnGUI的使用
- Linux下ELF可执行文件装载与运行