ghost79
导航
嘉小博客园
首页
新随笔
联系
聚合
登录
<
2009年9月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
统计
随笔 - 10
文章 - 10
评论 - 2
引用 - 0
留言簿(0)
给我留言
查看公开留言
查看私人留言
随笔分类
信息学奥林匹克 (9)
(rss)
随笔档案
2009年9月 (4)
2009年4月 (6)
文章档案
2009年9月 (1)
2009年6月 (7)
2009年4月 (2)
搜索
最新评论
1. re: 二叉树类的定义和实现
看不懂
--太帅
2. re: 二叉树类的定义和实现
下次请用中文。
--太帅
3. dff
sdf
--
4. asdf
asdf
--
5. asdf
asdf
--
阅读排行榜
1. 计算N的阶乘(207)
2. 约瑟夫问题的数组实现(191)
3. 经典递归问题——汉诺塔(190)
4. 用计算机来计算圆周率(176)
5. 等比数列公式及推导(167)
6. 用筛法求2-n之间的所有素数(161)
7. 递归版二分查找(151)
8. N阶奇数幻方题解(148)
9. 合并排序之C++实现(145)
10. 二叉树类的定义和实现(143)
评论排行榜
1. 经典递归问题——汉诺塔(2)
2. 二叉树类的定义和实现(2)
3. 约瑟夫问题的数组实现(1)
4. 合并排序之C++实现(0)
5. 递归版二分查找(0)
6. 等比数列公式及推导(0)
7. 用计算机来计算圆周率(0)
8. N阶奇数幻方题解(0)
9. 计算N的阶乘(0)
10. 用筛法求2-n之间的所有素数(0)
合并排序之C++实现
void
merge(
int
*
A,
int
p,
int
q,
int
r )
{
int
n1
=
q
-
p
+
1
,
n2
=
r
-
q,
*
L
=
new
int
[ n1
+
1
],
*
R
=
new
int
[ n2
+
1
];
for
(
int
k
=
0
; k
<
n1; k
++
) L[ k ]
=
A[ p
+
k ];
for
(
int
k
=
0
; k
<
n2; k
++
) R[ k ]
=
A[ q
+
k
+
1
];
L[ n1 ]
=
2147483647
, R[ n2 ]
=
2147483647
;
int
i
=
0
, j
=
0
;
for
(
int
k
=
0
; k
<
r
-
p
+
1
; k
++
)
if
( L[ i ]
<=
R[ j ] )
{
A[ p
+
k ]
=
L[ i ];
i
++
;
}
else
{
A[ p
+
k ]
=
R[ j ];
j
++
;
}
delete []L;
delete []R;
}
void
merge_sort(
int
*
A,
int
p,
int
r )
{
if
( p
<
r )
{
int
q
=
( p
+
r )
/
2
;
merge_sort( A, p, q );
merge_sort( A, q
+
1
, r );
merge( A, p, q, r );
}
}
posted on 2009-09-10 10:57 C家家 阅读(145)
评论(0)
编辑
收藏
评论
标题
姓名
主页
内容
请输入验证码:
*
Remember Me?
登录
使用高级评论
Top
订阅回复
取消订阅
[使用Ctrl+Enter键可以直接提交]
Powered by:
Copyright © C家家