douhui2002
C++博客
首页
新随笔
联系
聚合
管理
随笔-11 评论-1 文章-0 trackbacks-0
7月18日
今天主要还是学习分治与递归,实现了归并排序和快速排序。
原来这两种排序方法还有可以改进的地方,比如归并排序中的merge函数,还有就是快速排序中出现有很多值相等的数组时的处理。
1
void
merge(
int
*
c ,
int
*
d ,
int
left,
int
middle,
int
right)
2
{
3
//
合并c[left..middle],c[middle+1..right]到d[left..right]
4
int
i
=
left,j
=
right,k
=
left,t;
5
for
(t
=
left;t
<=
middle;t
++
)
6
{
7
d[t]
=
c[t];
8
9
}
10
for
(t
=
middle
+
1
;t
<=
right;t
++
)
11
{
12
d[right
+
middle
+
1
-
t]
=
c[t];
//
反向复制
13
}
14
while
(k
<=
right)
//
核心
15
{
16
if
(d[i]
<=
d[j])
17
c[k
++
]
=
d[i
++
];
18
else
c[k
++
]
=
d[j
--
];
19
}
20
}
关于快速排序的优化,即三路快速排序,目前正在学习中。加油吧。
posted on 2010-07-18 16:24
douhui
阅读(232)
评论(0)
编辑
收藏
引用
所属分类:
算法初步
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
2010年8月13日
2010年8月5日
2010年8月2日
7月19日(补)
7月18日
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
<
2024年9月
>
日
一
二
三
四
五
六
25
26
27
28
29
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
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
linux初步(4)
论文记录
算法初步(5)
疑难杂症(1)
随笔档案
2011年8月 (1)
2011年4月 (4)
2010年8月 (3)
2010年7月 (3)
算法学习
搜索
最新评论
1. re: ubuntu中deb 包的强制安装
有的包还能自我依赖呢。。。真使人无语啊。。。
--强制
阅读排行榜
1. ubuntu中deb 包的强制安装 (4097)
2. ubuntu中tar命令的使用(3177)
3. ubuntu 中 在线听音乐(706)
4. 利用DOS指令和EXCEL函数实现文件名的批量修改(482)
5. 2010年8月2日 (388)
评论排行榜
1. ubuntu中deb 包的强制安装 (1)
2. ubuntu中tar命令的使用(0)
3. ubuntu 中 在线听音乐(0)
4. 利用DOS指令和EXCEL函数实现文件名的批量修改(0)
5. 转变日记(0)