一天一小步(排序——2)
来源:互联网 发布:手机淘宝联盟怎么提现 编辑:程序博客网 时间:2024/05/17 14:20
//合并排序
template<typename T>
void Merge(T* a, int l, int m, int r)
{
int n1 = m - l +1;
int n2 = r - m;
T* L = new T[n1];
T* R = new T[n2];
//初始化L、R数组
for(int i = 0; i < n1; i++)
L[i] = a[l + i];
for(int i = 0; i < n2; i++)
R[i] = a[m + i + 1];
int i = 0;
int j = 0;
int k = l;
while(i < n1 && j < n2)
{
if(L[i] < R[j])
{
a[k++] = L[i++];
} else {
a[k++] = R[j++];
}
}
while(j < n2) a[k++] = R[j++];
while(i < n1) a[k++] = L[i++];
}
template<typename T>
void Merge_Sort_dispatch(T* a, int l, int r) //对[l,r]区间进行排序
{
if(l < r)
{
int m = (l + r) / 2;
Merge_Sort_dispatch (a,l,m);
Merge_Sort_dispatch (a,m+1,r);
Merge (a,l,m,r);
}
}
template<typename T>
void Merge_Sort(T* a,int n)
{
Merge_Sort_dispatch(a,0,n-1);
}
- 一天一小步(排序——2)
- 一天一小步(排序——1)
- 一天一小步(排序——3)
- 一天一小步(排序——4)
- 一天一小步(排序——5)
- Head First HTML5 Programming—每天一小步-(一)
- Head First HTML5 Programming—每天一小步-(二)
- 一小步
- 人类的一小步(第二章)
- 每天一小步,人生一大步——8086/8088基本指令
- 一天一排序之“希尔排序(缩小增量排序)”
- 每天一小步——C语言中嵌入正则表达式
- 每天一小步——自写服务器与信号处理僵尸子进程
- 每天一小步——设备模型之kobject,kset及其关系
- OSGi一小步
- 一个人的一小步
- 走出一小步
- 一天一排序之“归并排序(mergesort)”
- 12
- Android应用程序组件Content Provider简要介绍和学习计划
- CentOS6.0 安装VMWare tools遇到到问题“What is the location of the directory..."
- C# winform 右下角弹出窗口效果
- Launcher 桌面3D效果实现切屏
- 一天一小步(排序——2)
- 多态
- 大小端存储的问题
- 一天一小步(排序——3)
- OpenStack Nova Architecture
- 好的测试(Q\L\G\F)
- Common Code Smell
- 动态堆
- 虚拟蜜网Honeywall的安装