博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法导论7.1-4习题解答(快速排序)
阅读量:4958 次
发布时间:2019-06-12

本文共 986 字,大约阅读时间需要 3 分钟。

CLRS 7.1-4 :

应如何修改QUICKSORT,才能使其按非增序进行排序?

算法思想:

改掉书上partition算法中的<=为>=

#include
<
iostream
>
using 
namespace
std;
void
quick_sort(
int
*
&
a,
int
p,
int
r);
int
partition(
int
*
&
a,
int
p,
int
r);
int
main()
{
const 
int
LEN
=
20
;
int
b[LEN]
=
{
12
,
43
,
0
,
-
4
,
98
,
75
,
64
,
88
,
5
,
32
,
11
,
12
,
13
,
84
,
34
,
27
,
-
5
,
-
244
,
49
,
345
};
int
*
a
=
new 
int
[LEN];
for
(
int
i
=
0
; i
<
LEN; i
++
)
a[i]
=
b[i];
quick_sort(a,
0
, LEN
-
1
);
for
(
int
i
=
0
; i
<
LEN; i
++
)
cout
<<
a[i]
<<
endl;
return
0
;
}
void
quick_sort(
int
*
&
a,
int
p,
int
r)
{
if
(p
<
r)
{
int
q
=
partition(a, p, r);
quick_sort(a, p, q
-
1
);
quick_sort(a, q
+
1
, r);
}
}
int
partition(
int
*
&
a,
int
p,
int
r)
{
int
j
=
p;
for
(
int
i
=
p; i
<
r; i
++
)
{
if
(a[i]
>=
a[r])
{
if
(i
!=
j)
{
int
temp
=
a[i];
a[i]
=
a[j];
a[j]
=
temp;
}
j
++
;
}
}
int
ex
=
a[j];
a[j]
=
a[r];
a[r]
=
ex;
return
j;
}

PS:第七章其他题目都为算法证明题,学的不深,都下不了手。

转载于:https://www.cnblogs.com/null00/archive/2011/03/21/2065074.html

你可能感兴趣的文章
random库
查看>>
浏览器记住密码和回填
查看>>
引用拷贝、浅拷贝 和 深拷贝
查看>>
MySQL分区表
查看>>
Spring Boot接收Post参数
查看>>
Post Content-Type
查看>>
Spring boot发布war包
查看>>
Spring boot application.yml
查看>>
Java Map
查看>>
Java == equals
查看>>
cron表达式
查看>>
Java final关键词
查看>>
Java 随笔
查看>>
Spring Boot
查看>>
神经网络入门(电影评论分类--------二分类问题)
查看>>
[mysql相关集锦] 001 - mysql zip安装/The service already exists/MySQL 服务无法启动
查看>>
[功能集锦] 003 - 一键生成mysql数据字典/数据库速查表
查看>>
[功能集锦] 002 - mysql查询数据库字典+导出+样式一键整合至excel
查看>>
《用户故事与敏捷方法》 笔记
查看>>
Virtual box安装回退的一系列可能的原因及解决办法
查看>>