排序比较次数的数据结构分析.doc

排序比较次数的数据结构分析.doc

ID:52717056

大小:148.00 KB

页数:16页

时间:2020-03-29

排序比较次数的数据结构分析.doc_第1页
排序比较次数的数据结构分析.doc_第2页
排序比较次数的数据结构分析.doc_第3页
排序比较次数的数据结构分析.doc_第4页
排序比较次数的数据结构分析.doc_第5页
资源描述:

《排序比较次数的数据结构分析.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、排序排序问题的输入是一个线性表,该线性表的元素属于一个偏序集;要求对该线性表的元素做某种重排,使得线性表中除表尾外的每个元素都小于等于<或大于等于)它的后继。设R为非空集合A上的二元关系,如果R满足自反性(对于每一个x∈A,(x,x>∈R>,反对称性((x,y>∈R∧(y,x>∈R→x=y>和传递性((x,y>∈R∧(y,x>∈R→(x,z>∈R>,则称R为A上的偏序关系,记作≤。如果(x,y>∈R,则记作x≤y,读作“x小于等于y”。存在偏序关系的集合A称为偏序集。注意,这里的≤不是指数的大小,而是指在偏序关系中的顺序性。x≤y的含义是:按照这个序,x排在y前面

2、。根据不同的偏序定义,≤有不同的解释。例如整除关系是偏序关系≤,3≤6的含义是3整除6。大于或等于关系也是偏序关系,针对这个关系5≤4是指在大于或等于关系中5排在4的前面,也就是说5比4大。b5E2RGbCAP在实际应用中,经常遇到的偏序关系是定义在一个记录类型的数据集合上的。在该记录类型中有一个主键域key,key域的类型是某一个偏序集,记录的其他域称为卫星数据。比较线性表中的两个元素Li和Lj的大小,实际上是比较Li.key和Lj.key的大小<这种比较当然也是偏序集中的比较)。举例而言,某公司的数据库里记录了员工的数据,每一项纪录包括姓名,编号,年龄,工资等

3、几个域,如果以编号为key域对员工记录排序,则是将员工记录按照编号排序;如果以工资为key域对员工记录排序,则是将员工记录按照工资高低排序;如果以姓名为key域对员工记录排序,则是以员工姓名的汉语拼音按照字典顺序排序。p1EanqFDPw关于偏序集的具体概念和应用,请参见离散数学的相关资料。如果一个排序算法利用输入的线性表在原地重排其中元素,而没有额外的内存开销,这种排序算法叫做原地置换排序算法(inplacesort>;如果排序后并不改变表中相同的元素原来的相对位置,那么这种排序算法叫做稳定排序算法(stablesort>。DXDiTa9E3d排序问题一般分为内

4、排序(internalsorting>和外排序(externalsorting>两类:内排序:待排序的表中记录个数较少,整个排序过程中所有的记录都可以保留在内存中;外排序:待排序的记录个数足够多,以至于他们必须存储在磁带、磁盘上组成外部文件,排序过程中需要多次访问外存。RTCrpUDGiT排序问题的计算复杂性对排序算法计算时间的分析可以遵循若干种不同的准则,通常以排序过程所需要的算法步数作为度量,有时也以排序过程中所作的键比较次数作为度量。特别是当作一次键比较需要较长时间,例如,当键是较长的字符串时,常以键比较次数作为排序算法计算时间复杂性的度量。当排序时需要移动

5、记录,且记录都很大时,还应该考虑记录的移动次数。究竟采用哪种度量方法比较合适要根据具体情况而定。在下面的讨论中我们主要考虑用比较的次数作为复杂性的度量。5PCzVD7HxA为了对有n个元素的线性表进行排序,至少必须扫描线性表一遍以获取这n个元素的信息,因此排序问题的计算复杂性下界为Ω(n>。jLBHrnAILg如果我们对输入的数据不做任何要求,我们所能获得的唯一信息就是各个元素的具体的值,我们仅能通过比较来确定输入序列的元素间次序。即给定两个元素ai和aj,通过测试aiaj中的哪一个成立来

6、确定ai和aj间的相对次序。这样的排序算法称为比较排序算法。下面我们讨论一下比较排序算法在最坏情况下至少需要多少次比较,即比较排序算法的最坏情况复杂性下界。xHAQX74J0X我们假设每次比较只测试ai≤aj,如果ai≤aj成立则ai排在aj前面,否则ai排在aj16/16后面。任何一个比较排序算法可以描述为一串比较序列:(ai,aj>,(ak,al>,..,(am,an>,...表示我们首先比较(ai,aj>,然后比较(ak,al>,...,比较(am,an>,...,直到我们获取了足够的信息可以确定所有元素的顺序。显而易见,如果我们对所有的元素两两进行一次比较

7、的话(总共比较了Cn2次>,就一定可以确定所有元素的顺序。但是,如果我们运气足够好的话,我们可能不必对所有元素两两进行一次比较。比如说对于有三个元素a1,a2,a3的线性表进行排序,如果我们先比较a1和a2,得到a1≤a2;然后比较a2和a3,得到a2≤a3;则不必比较a1和a3,因为根据偏序集的传递性,必有a1≤a3;但是如果a2≥a3,我们还必须比较a1和a3才能确定a1和a3的相对位置。如果我们适当的安排比较的次序的话,也可以减少比较的次数。这样我们可以用一棵二叉树表示比较的顺序,如下图所示:LDAYtRyKfE该树的每一个非叶节点表示一次比较,每一根树枝表

8、示一种比较

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。