2024年4月30日发(作者:)
电脑编程技巧与维护
链式存储结构上选择排序算法的研究与实现
岳秋菊,达文姣,瞿朝成。任志国
(兰州城市学院信息工程学院,兰州730070)
摘要:线I陛表上进行的选择排序法是一种较简单的内部排序算法,计算机研发人员经常研究和讨论顺序表中选择
排序算法的实现及其改进。讨论了选择排序在单链表上和静态链表上的算法及实现过程,分析了算法时间和空间复
杂度。
关键词:选择排序;存储结构;单链表;静态链表;算法分析
Research and Realization of Selection Sort Algorithm on
Link Storage Structure
YUE Qiuju,DA Wenjiao,Qu Chaocheng,REN Zhiguo
(Cortege of Information Technology of Lanzhou City Universiy,Latnzhou 730070)
Abstract:Selection Sort which proceeds on linear list is a kind of Sionple inner sort algorithms.Computer workers always
research and discuss the realization as well as improvement on Selection sort Algorithon of link list.In this article we discuss
the algorithm and realization proceeded on single—link list and static—link list.Finally we analyze the complexity of time and
space of the.
Key words:Selection Sort;Storage Structure;Single-link list;Static-link list;Analysis of algorithm
l前言
选择排序是一种较简单的选择类排序算法。在文献[1-4】
中讨论了其在顺序表上的实现过程。选择排序在链表上的基
本思想是从记录的无序子序列中“选择”关键字最小或最大
elemtype t;
for(p=head->next;p->next!=NULL;p=p->next)
,,p从链头遍历到链尾
{
for(min=p,q--p一>next;q?=NULL;q=q->next)
的记录,并将它加入到有序子序列的后面,以此方法增加记
录的有序子序列的长度。含有n个记录线性表需要进行n一1
趟排序;每一趟选择在剩余的记录中最小(大)的记录,然后
将该元素交换到相应位置,重复直至全部排序完毕。
在排序的研究上近几年来也有一些新的方法和结果产生,
参见文献[6—9]。在顺序表上选择排序的实现较简单,在链表
上的排序思想基本和顺序表上的相似。文中未提及的概念及
术语参见文献[1】与文献[2]。
,,p,q始终是前序和后继关系
{
if(q->data<min->data)价己住最小元素的位置
{
)
if(min!=p)
min=q; )
鸺最小元素交换到链的最前面完成选择排序
{t-p一>data;
p->data=min->data;
min->data=t;
2选择排序算法在单链表上实现
为了能够更加清楚地描述选择排序在链式结构上的实现,
定义链表的节点的链式结构:
ypedef itnt elemtype;
struct node
}
}
)
3选择排序算法在静态链表上实现
为了描述插入排序在静态链表上的排序过程,定义静态
链表的结构:
f elemtype data;,/数据域
struct node*next;H ̄d针域
l linklist;//¥ ̄表名
#define N 50//N为链表可能达到的最大长度
typedef int elemtype;
typedef stuct node r
算法思想描述:在选择排序中,将所有元素进行从链头
扫描到链尾。在扫描过程中记住最小元素的位置。将最小元
素交换到最前面完成一次排序过程,这样重复进行扫描交换,
最后变为有序序列。算法实现下:
void Selectsort(1inklist head)
f elemtype data;//数据域
int next;// ̄针域
}slinklist;
//单链表上的选择排序算法
{
linklist p’ IIlin, q;
作者简介:岳秋菊(1977一),女,讲师,硕士,研究方向:
应用数学与算法。
收稿日期:2011—07—18
//min存放最小元素的地址;P,q分别为前序,后继的关系
与
SOFIWARE DEVEL0PMENT AND DESIGN
在静态单链表中,进行选择排序,具体操作为:链表指
针指向头结点后的第一个元素,首先选出链表中最小的元素,
软件开发与设计
的设计思想和实现过程基本相同,而且实现过程也非常相似。
4算法分析
在线性表上的选择排序,最好情况下的时间复杂度是O
(n),最差和平均情况下的时间复杂度是O( ,辅助空间为
将它和链表中的第1个元素交换。链表指针往后指向第二个
元素的位置,然后从剩余的n一1个节点中选择次小的元素,
将它和链表中的第2个元素交换。直到待选择位置到倒数第2
个节点为止,剩下的最后一个节点就是数据元素最大的节点。
O(1),算法不稳定、在单链表和静态链表上的直接插入排序
的时间复杂度,稳定性与在顺序表上完全相同。从实现过程
和算法的分析,可以很明显的发现两种算法的设计思想和实
现过程相似。链式结构上每个数据元素占用一个节点,而不
算法实现描述如下:
void Selectsort(slinklist S[N1)
,/静态链表上的选择排序算法
{
会有多余的结点存在,所以数据所占的存储空间 良费较少。
链式结构上的排序只改变链的指向,而不会改变数据元素所
占节点的位置,即不会移动数据元素,从而节省了移动数据
int p,min,q;//min存放最小元素的地址;P,q分别为前序,
,,后继的关系
elemtype t;
元素所带来的运算工作量,提高了效率。
for(p=s[head】.next;s[P].next!一1;p=s[p].next)
从链头遍历到链尾
f
or(fmin=p,q=s【P】.next;q!=一1;q=s[q].next)
参考文献
[1】严蔚敏,吴伟民.数据结构[M].清华大学出版社,1997.
[2】耿国华.数据结构(c语言版)【M】.西安:西安电子科
技大学出版社,2002.
[3】Robetr L.Kruse,Alexander J.Ryba.Data Structures and Program
,,p,q始终是前序和后继关系
{
if(s【q].data<s【IIlin].data)
肌己住最小元素的位置
{ min=q; }
Design in C++[M】.Pearson Education,USA,2001.
)
if(min!=p)
[4]傅清祥,王晓东.算法与数据结构[M].北京:电子工业
出版社,1998.
[5】Shell D L.A high—speed sorting procedure[J].Communica-
tions of the ACM,1959.
∥斗辱最小元素交换到链的最前面完成选择排序
{t=s[q】.daa;t
S【q】.data=s【mini.data;
S【min].data=t;
[6]任志国,蔡小龙,等.插入排序算法的双链表模拟[J].
电脑编程与维护,2010,(3):8-9.
1
)
}
[7]达文姣,任志国,等.链式结构上排序算法的研究[J].
电脑编程与维护,2011,(3):1-2.
在线性表上的选择排序,最好情况下的时间复杂度是O
(n),最差和平均情况下的时间复杂度是O(n2),辅助空间为
O(1),算法一般不稳定。在单链表和静态链表上的选择排序
的时间复杂度、空间复杂度、稳定性与在线性表上完全相同。
所以从实现过程和算法的分析,可以很明显地发现两种算法
【8】祁建宏,任志国,等.单链表中双插入排序算法研究【J].
电脑编程与维护,2011,f2):26—27.
[9】达文姣,任志国,等.静态链表上排序算法的研究[J].
自动化与仪器仪表,2011,(2):80—81.
(上接第9页)
[7】Dawei Sun,Guiran Chang,Chuan Wang,Yu Xiong,Xingwei
Wang,Eficifent Nash Equilibrium Based Cloud Resource
of Volunteer Computing With Lengthy Climate Model
Simulations[J】,Proceedings of he tFirst International Confe-
rence on e—Science and Grid Computing.2005:8—15.
Allocation by Using a Continuous Double Auction[J]2010
International Conference On Computer Design And Appliati—
【1 1]S Larson,C Snow,M Shirts,et1.Foalding@Home and Genome
@Home:Using distributed computing to tackle previously
ons,2010:V1—94一V1-99.
[8]D.P.Anderson.“BOINC:A System for Public—Resource
Computing and Storage”.5th IEEE/ACM International
intrac-table problems in computational biology[J].Computa—
tional Genomics,2002:634-654.
Workshop on Grid Computing,Nov.8 2004,Pittsburgh,PA.
365—372.
[12】David P.Anderson,Eric Korpela,Rom Walton.High—Perfb卜
mance Task Distirbution for Volunteer Computing【J],
Proceedings of the First International Conference on e—Science
and Grid Computing,2005:196-203.
[9】D.P.Anderson,J.Cobb,E.Korpela,M.Lebofsky,D.Werthimer.
SETI@home:An Experiment in Public—Resource Computing”.
Communications of the ACM,45(1 1),November 2002:56—
61.
【13】David P.Anderson,Cad Christensen,Bruce Alien.Designing
a Runtime System for Volunteer Computing【J】Proceedings
of the 2006 ACM/IEEE SC106 Conference,2006:126—135.
『10】Cad Christensen,Tolu Aina,David Stainforth.The Challenge
发布者:admin,转转请注明出处:http://www.yc00.com/news/1714450211a2448797.html
评论列表(0条)