守望
Here we go!
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
0 随笔 :: 6 文章 :: 0 评论 :: 0 Trackbacks
<
2026年6月
>
日
一
二
三
四
五
六
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
11
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
文章分类
C++
(rss)
数据结构(1)
(rss)
算法(3)
(rss)
字符串(2)
(rss)
文章档案
2011年10月 (5)
2010年6月 (1)
相册
关于我
家乡
迷茫的日子
那些岁月很白
搜索
最新评论
[排序]选择排序(Selection sort)
第一步,选择一个最大的元素,放在列表的尾端。
第二部,从第0个到第n-1个元素中选择一个最大的,放在列表倒数第二个位置。
。。。。。
1
template
<
class
Record
>
2
void
SelectionSort(Record
*
array,
int
count)
3
{
4
for
(
int
i
=
count
-
1
; i
>
0
;
--
i)
5
{
6
int
max
=
MaxKey(Record
*
array,
0
, i);
7
Record tmp
=
array[max];
8
array[max]
=
array[i];
9
array[i]
=
tmp;
10
}
11
}
12
13
template
<
class
Record
>
14
int
MaxKey(Record
*
array,
int
low,
int
high)
15
{
16
int
largest
=
low;
17
for
(
int
cur
=
low
+
1
; cur
<=
high;
++
cur)
18
{
19
if
(array[largest]
<
array[cur])
20
{
21
largest
=
cur;
22
}
23
}
24
25
return
largest;
26
}
时间复杂度:
比较:1/2n^2 + O(n)
赋值:O(n)
稳定性:
不稳定。
但把19行的条件改为
if
(array[largest]
<=
array[cur])
就是稳定的了
posted on 2011-10-03 14:59
winter
阅读(171)
评论(0)
编辑
收藏
引用
所属分类:
算法
只有注册用户
登录
后才能发表评论。
相关文章:
[排序]冒泡排序(Bubble sort)
[排序]选择排序(Selection sort)
[排序]插入排序(Insertion sort)
网站导航:
博客园
博客园最新博文
博问
管理
Powered by:
C++博客
Copyright © winter