数据结构中排序方法(共7篇)
数据结构中排序方法 篇1
1 内排序方法的比较分析
排序在计算机程序设计中非常重要,各种排序方法各有其优缺点,适用场合也不同。各种内排序方法之间的比较,主要从以下几个方面综合考虑:①时间复杂度,②空间复杂度,③稳定性,④算法简单性,⑤待排序记录数n的大小,⑥记录本身信息量的大小。
我们从6个方面对各种排序方法进行比较分析。
(1)从时间复杂度方面分析:直接插入排序、直接选择排序和冒泡排序这3种简单排序方法属于第一类,其时间复杂度为O(n2);堆排序、快速排序和归并排序这3种排序方法属于第二类,其时间复杂度为O(nlog2n)。这种分类只是就平均情况而言,若从最好情况考虑,则直接插入排序和冒泡排序的时间复杂度最好,为O(n),其它算法的最好情况与平均情况相同。若从最坏情况考虑,则快速排序的时间复杂度为O(n2),直接插入排序和冒泡排序虽然与平均情况下相同,但系数大约比平均情况增加一倍,所以运行速度将降低一半,最坏情况对直接选择排序、堆排序和归并排序影响不大。若再考虑各种排序算法的时间复杂度的系数,则在第一类算法中,直接插入排序的系数最小,直接选择排序次之(但它的移动次数最小),冒泡排序最大,所以直接插入排序和直接选择排序比冒泡排序速度快;在第二类算法中,快速排序的系数最小,堆排序和归并排序次之,所以快速排序比堆排序和归并排序速度快。由此可知,在最好情况下,直接插入排序和冒泡排序最快;在平均情况下,快速排序最快;在最坏情况下,堆排序和归并排序最快。
(2)从空间复杂度方面分析:所有排序方法可归为3类,归并排序单属于一类,其空间复杂度为O(n);快速排序也单独属于一类,其空间复杂度为O(log2n);其它排序方法归为第三类,其空间复杂度为0(1)。由此可知,第三类算法的空间复杂度最好,第二类次之,第一类最差。
(3)从稳定性方面分析:所有排序方法可分为两类,一类是稳定的,它包括直接插入排序、冒泡排序、归并排序和基数排序。另一类是不稳定的,它包括直接选择排序、快速排序、堆排序和希尔排序。
(4)从算法简单性方面分析:一类是简单算法,它包括直接插入排序、直接选择排序和冒泡排序,这些算法都比较简单和直接,易于理解;另一类是改进后的算法,它包括堆排序、快速排序和归并排序(归并排序可看作为对直接插入排序的一种改进,它把记录分组排序,对记录的插入和移动改为向另一个数组的复制),这些算法都比较复杂一些。
(5)从待排序的记录数n的大小方面分析:n越小,采用简单排序方法越合适,n越大,采用改进排序方法越合适。因为n越小,n2同nlog2n的差距越小,并且简单算法的时间复杂度的系数均小于1(除冒泡排序中最坏情况外),改进算法的时间复杂度的系数均大于等于1,因而也使得它们的差距变小。另外,输入和调试简单算法比输入和调试改进算法要少用许多时间,若把时间也考虑进去,当n较小时,选用简单算法比选用改进算法要少花时间。当n越大时选用改进算法的效果就越显著,因为n越大,n2和nlog2n的差距就越大。例如,当n=10000时,nlog2n只是n2的约1/750。
(6)从记录本身信息量的大小方面分析:记录本身的信息量越大,表明占用的存储字节数就越多,移动记录时所花费的时间就越多,所以对记录的移动次数较多的算法不利。例如,在3种简单排序算法中,直接选择排序移动记录的次数为n的数量级,其它两种为n2数量级,所以当记录本身的信息量较大时,对直接选择排序算法有利,而对其它两种算法不利。在3种改进算法中,记录本身信息量的大小,对它们的影响区别不大。
以上从6个对各种排序方法进行了比较和分析,在实际的排序问题中首先考虑排序对稳定性的要求,基要求稳定,则只能在稳定方法中选取,否则可以从所有方法中选取;其次要考虑待排序记录数n的大小,若n较大,则在改进方法中选取,否则在简单方法中选取;然后再考虑其它因素。
2 排序方法选择要素分析
综上所述,我们可以得出选择排序方法的5点要素:
(1)如果待排序记录的初始状态已经按关键字基本有序,则选择直接插入排序法或冒泡排序法为宜。
(2)如果待排序记录的个数n较小,则可以采用直接插入排序法或直接选择排序法。①当待排序记录数n较小,记录或基本有序(即正序)或分布较随机,且要求稳定时,采用直接插入排序为宜;②当待排序记录数n较小,对稳定性不作要求时,采用直接选择排序为宜,若排序码不接近逆序,亦可采用直接插入排序。
(3)如果待排序记录的个数n较大,则应该采用时间复杂度为O(nlog2n)的排序方法,比如,快速排序法、堆排序法或归并排序法。①快速排序法被认为是目前基于比较记录关键字的内部排序中最好的排序方法,当待排序序列的关键字是随机分布时,快速排序的平均时间复杂度最优,但是在待排序序列基本有序时,将蜕化为冒泡排序,其时间性能不如堆排序和归并排序。因此,当待排序记录数n较大,排序码分布较随机,且对稳定性不作要求时,采用快速排序为宜;②堆排序所需要的辅助空间少于快速排序,并且在最坏的情况下时间复杂度不会发生变化。因此,当待排序记录数n较大,排序码分布可能会出现正序或逆序的情况,且对稳定性不作要求时,采用堆排序(或归并排序)为宜;③归并排序所需要的时间比堆排序省,但是它所需要的辅助存储空间最多。因此,当待排序记录数n较大,内存空间允许,且要求排序稳定时,采用归并排序为宜;④快速排序法、堆排序法、希尔排序法都是不稳定的排序法;直接插入排序法、直接选择排序法、冒泡排序法、归并排序法和基数排序法都是稳定的排序法;⑤基数排序可以在O(d(n+rd))时间内完成对n个记录的排序,其中,d是指单逻辑关键字的个数,rd是单关键字的取值范围,即基数。基数排序只适用于字符串和整数这类有明显结构特征的关键字;如果n很大,d较小时,用基数排序较好。
3 结束语
上述讨论的排序算法中,除了基数排序外,都是在向量存储结构上实现的。当记录本身信息量很大时,为了避免大量时间用在移动数据上,可以利用链表作为存储结构。插入排序和归并排序都容易在链表上实现,但是有的排序方法,比如快速排序和堆排序在链表上却很难实现。
参考文献
[1]朱战立.数据结构(C~(++)语言描述)[M].北京:高等教育出版社, 2004.
[2]彭波.数据结构[M].北京:清华大学出版社,2003.
[3]许卓群.数据结构[M].北京:中央广播电视大学出版社,2001.
数据结构中排序方法 篇2
第1步,打开Word2007文档窗口,在需要进行数据排序的Word表格中单击任意 单元格,在“表格工具”功能区切换到“布局”选项卡,并单击“数据”分组中 的“排序”按钮,如图021314所示。
图2009021314 单击“排序”按钮
第2步,打开“排序”对话框,在“列表”区域选中“有标题行”单选框。如 果选中“无标题行”单选框,则Word表格中的标题也会参与排序,如图 2009021315所示。
图2009021315 选中“有标题行”单选框
第3步,在“主要关键字”区域,单击关键字下拉三角按钮选择排序依据的主 要关键字,
单击“类型”下拉三角按钮,在“类型”列表中选择“笔画”、“数 字”、“日期”或“拼音”选项。如果参与排序的数据是文字,则可以选择“笔 画”或“拼音”选项;如果参与排序的数据是日期类型,则可以选择“日期”选 项;如果参与排序的只是数字,则可以选择“数字”选项。选中“升序”或“降 序”单选框设置排序的顺序类型,如图2009021316所示。
图2009021316 设置主要关键字
第4步,在“次要关键字”和“第三关键字”区域进行相关设置,并单击“确 定”按钮对Word表格数据进行排序,如图2009021317所示。
数据结构中排序方法 篇3
[关键词]元数据标签;搜索引擎;HTML;搜索结果;信息组织
[中图分类号]G354 [文献标识码]A [文章编号]1008-0821(2010)05-0163-04
Study on the Effect of Metadata on Improving the Searching EfficiencyXing Bo
(Department of Information Management,Beking University,Beijing 100871,China)
[Abstract]The aim of this paper was to determine the effect of metadata on improving the searching efficiency.First,the worth of metadata was discussed,and then,the effect of metadata on how to improve the searching efficiency was studied by the empirical study.The searching result was used to investigate the real status of the usage of metadata in HTML.The Generalized Linear Model(GLM)was used to describe the relation between the metadata and searching result.The result showed that the effect of metadata on improving the searching efficiency still existed.It was necessary to pay attention to the importance of metadata in HTML.
[Keywords]metadata label;search engine;HTML;search result;information organization
现今,搜索引擎已成为用户获得网络信息资源的最主要途径。网页资源在搜索引擎中的排名将直接影响到网页资源的内容被用户接收和利用的效率。而检索结果的排序由网页内容与特定检索主题的相关度所决定。网页资源的内容与特定检索主题的相关度越高,在用户搜索该检索词时,网页资源在检索结果中的排序也就越高。另一方面,资源描述是揭示信息资源,说明信息资源主题内容的重要手段。更为有效合理的资源描述,可以更为准确的揭示出信息资源与特定主题之间的相关程度。据此,元数据标签作为网络信息资源描述的重要手段,理应成为影响搜索结果排名的重要因素,在排序算法中具有较高权重。但随着搜索引擎作弊行为的日益泛滥,使许多网页中的元数据描述缺乏规范、甚至与实际主题毫不相关,影响了搜索结果的准确性。因此,搜索引擎降低了元数据描述在排序算法中的权重,元数据描述对结果排序的影响越来越小。针对这一问题,本文将通过分析元数据描述及优化方法,并对实际搜索结果进行调查分析,借此考察元数据标签对搜索引擎排序结果的真实影响,并讨论元数据标签是否对于优化搜索结果排序仍具有实际意义。
1 元数据描述及其在检索中的应用
11 HTML语言中的元数据描述
HTML(HyperText Mark-up Language)即超文本标记语言,由W3C(World Wide Web Consortium)负责控制和管理。现今,HTML语言是网络上应用最为广泛的语言,也是构成网页文档、进行网页编程的主要语言基础。HTML文档一般由头信息(Head)和主体(body)两部分组成。HTML头信息就是指HTML文件中被
标识符所作用的区域。这部分为可选内容,主要包含一些说明性的内容和预定义。对于网页编目来说,网页的元数据描述标签就主要集中在这一部分当中。其中,title、Meta-Description、Meta-keywords是头信息区中对网页资源内容进行描述所用到3种最主要的元数据标签。合理使用这些标签,可以使网络信息资源得到更合理的揭示,从而在检索结果中提高其相关度排名。111
112 元数据标签Meta-Description和Meta-keywords
元数据标签Meta项是HTML头部的主要组成部分,主要用于表示一个文档的页面信息,例如说明字符编码、鉴别作者、设定页面格式、标注内容提要以及网页关键字等等,还可以用来向服务器提供信息,例如截止日期和页面刷新间隔等。而其中与资源的内容描述最为相关的标签有2个:描述标签和关键词标签。描述标签,即Description标签,其内容是对页面内容的概括,相当于页面的简介。关键词标签即keywords标签,是通过若干关键词对页面内容进行概括描述。其具体的使用方式如下:
12 元数据描述对搜索引擎排序结果的优化作用
大多数搜索引擎都是提取网页标题中的全部或部分内容作为搜索结果中摘要信息的标题向用户展示,其在搜索引擎排序算法中的权重也是最高的。此外,类似于Google等搜索引擎会参考描述标签和关键词标签的内容作为检索结果中摘要信息生成的主要依据。因此,尽管由于搜索引擎作弊行为,通过堆砌关键词、过分滥用元数据标签,使搜索引擎排序算法给予这部分的权重越来越低,但不可否认元数据内容的优化,对提高页面相关性,吸引用户的点击还是具有较为重要的意义。
在元数据标签的优化过程中,内容的描述应做到主题突出、内容简洁。具体讲包括标签内容的长度控制、关键词分布及关键词词频等。
121 内容长度控制
为了提高页面的用户体验,搜索引擎会根据实际情况从页面
122 关键词分布
相较于传统检索系统,搜索引擎更为注重信息的位置对内容相关度的影响。搜索引擎一般认为一段文字中越靠前的词越重要越能反映文字的内容,关键词赋予的权值也越高。因此,在文字的最前面出现页面的主关键词,可以有效突出页面的主题,提高页面相关性。如:
123 关键词词频密度
关键词词频较高可以突出网页内容中重要的信息,但是关键词词频并非越高越好。相反,过高的关键词词频可能是人为堆砌关键词所致,影响用户的理解,甚至会触发搜索引擎的作弊惩罚。一般主关键词词频不超过3次,辅助关键词词频不超过1次。
2010年5月第30卷第5期元数据描述对搜索引擎排序结果影响研究May,2010Vol30 No52 调查的目的及方法
以下调查将对目前国内主要搜索引擎的检索结果进行调查研究,对元数据描述在实际中的应用情况以及其与检索结果相关度排序影响的真实情况进行分析。
根据网络调查机构艾瑞咨询集团(iResearch)的《2009年第三季度中国搜索引擎市场季度监测报告》最新数据显示,2009年第三季度中国搜索引擎市场的两大巨头百度、Google市场占有率达到了969%,因此选择这两个搜索引擎作为主要的研究对象。并且选取了Google热榜2009年度榜单中国内事件、国际事件、经济事件、社会事件和热点人物5个方面排名靠前的话题事件或人物各2个,共10个热点检索词:2009日全食、甲型H1N1流感、家电下乡、邓玉娇事件、小沈阳、新疆暴力事件、法航空难、创业板开市、躲猫猫事件、迈克尔•杰克逊。在调查检索词的选择方面,多选取的是事实型事件话题,以尽量避免具有过重商业色彩的搜索引擎优化手段对检索结果的影响。
分别取每个检索词在两大搜索引擎的检索结果的前五页检索结果,剔除其中的死链及非HTML文档,通过编程获得各网页结果的title、meta-description、meta-keywords标签内的元数据信息。统计元数据标签的使用率及使用效果,并分析其与实际检索结果排序之间的相关度。调查中共采集网页899个(不包含死链接及非HTML文档)。
3 调查结果分析
31 元数据使用情况分析
从表1的统计可知,在调查中有6307%的网页包含有Keywords标签的内容,6407%的网页包含有Description标签的内容,全部网页包含有title标签的内容。可以看出,title标签作为网页的标题,是对网页主题内容的概括,具有重要的意义,因此在网页制作和设计中得到了重视和应用,但Keywords和Description两个标签的使用仍不够普及。不过对比杨志于2008年的研究(Keywords:3980%,Description:3300%),这两个元数据标签的使用率已明显提高。表1 元数据使用情况统计表
项 目Google百度KDTAKDTA2009日全食2427434325274343甲型H1H1流感2321494926264444家电下乡2321454532294444邓玉娇事件2730464620264545小沈阳3432444429294444新疆暴力事件3735484833314747法航空难2729444431334747创业板开市3033454533304545躲猫猫事件2427434333324646迈克尔•杰克逊3032454526264242合 计279287452452288289447447
值得注意的是,部分网站已经有意识地使用这些标签,但由于网页编写上的不规范或者错误,导致机器无法将其识别为有效的元数据字段,使标签的使用没能起到应有的作用。因此,在今后网页编写的规范问题值得更加注意。
32 元数据描述对搜索引擎排序结果的影响分析
本次调查的有效网页共899个,为10个话题在两个搜索引擎结果中排名前五页的结果,因此排名分布在1~54位,其中由于部分排位的网页中存在死链接或非HTML文档,因此,每个排位的网页观测数量不完全相等,此外,由于排名在47之后的网页观测数量较少,不计入分析。故最终用于模型建立和相关度分析的网页观测共851个,检索结果排名分布于1~47位,每个位置的观测一般为16~20个,均值为1811个。以下,本文将从元数据的使用与优化两个方面分析其对搜索引擎排序结果的影响。
321 元数据标签的使用对搜索结果排序的影响分析
本部分主要分析元数据标签的使用对搜索结果排序的影响。由于被调查的所有网页都包含有title标签,因此在对元数据标签的使用与搜索结果排序的相关度分析过程中,不考虑title标签。将网页是否具有Keywords和Description标签作为模型建立的两个自变量,取值为0或1(0为不包含该标签,1为包含该标签),将网页的排名作为模型的因变量,建立数据集。并为数据集建立广义线性模型,可计算是否包含Keywords或Description标签对结果排序的影响。通过SAS编程,得到模型的回归系数,如下表(注:这里舍去了β参数部分):表2 元数据使用情况数据集分析结果
参数估计值标准
误差95%置信区间下限上限卡方
统计量p值VAR20291001783-005840640426601026VAR3-0435501799-07881-0082920701502
可见,两个自变量其p值都大于005,说明两自变量与因变量都不显著相关,是否包含Keywords或Description标签对结果排序的影响并不显著。产生这样的结果的原因,可能是由于搜索引擎作弊现象日益严重,搜索引擎的排序算法中,赋予Keywords和Description标签的权重越来越小。在这种情况下,元数据描述很难发挥其应有的效力,导致了Keywords和Description标签对结果排序的影响不显著。
322 元数据标签的优化对搜索结果排序的影响分析
本部分主要分析元数据标签的优化对搜索结果排序的影响。由于在前一部分中已经得出Keywords和Description标签的使用率不高,且其对结果排序的影响不显著,因此,在考虑元数据标签的优化对搜索结果排序的影响时,不再分析这两类标签。本部分的重点将分析title标签的优化对搜索结果排序的影响。
在前文中已经介绍了标签优化的三点注意事项,即:标签内容长度控制、关键词分布及关键词密度。基于以上分析,将对title标签优化的评估分为四方面的指标,即:title标签中是否含有检索词;title标签的内容长度是否能够在搜索结果中完整显示;title标签中检索词是否位于内容头部;title标签中检索词的词频。具体各指标的评分等级如下:表3 指标说明1
有否检索词:title标签中是否含有检索词指标得分含有检索词的完整词形(包括在内容中不连续出现)1含有检索词的不完整词形或近义词05不含有任何与检索词相关的关键词0
表4 指标说明2
标签长度:title标签的内容长度是否能够在
搜索结果中完整显示指标得分是1否0
表5 指标说明3
关键词分布:title标签中检索词是否位于内容头部指标得分是1否0表6 指标说明4
关键词词频:title标签中检索词的词频(次)指标得分001052~31405>40
分别评估各网页的指标得分,将各网页在以上4个方面的表现作为模型的自变量,将搜索引擎的排序结果作为因变量,建立数据集。为数据集建立广义线性模型,可计算标签优化的4个方面对结果排序的影响。通过SAS编程,得到模型的回归系数,如表7(注:这里舍去了β参数部分):表7 元数据使用情况数据集分析结果
参数估计值标准
误差95%置信区间下限上限卡方
统计量p值VAR2-0475805728-159850646906904062VAR308892026300373814046114300007VAR405948017560250509390114700007VAR5-0627105496-170420450013002539
可见,自变量VAR2和VAR5的p值都大于005,说明这两个自变量与因变量相关性不显著,即title标签中是否出现关键词以及关键词的词频对结果排序的影响并不显著。但同时,自变量VAR3和VAR4的p值则均小于005,这两个自变量与因变量具有较强的相关性,title标签长度符合规范的网页相对排名靠前(数值较小),title标签中检索词居头部位置的网页相对排名靠前(数值较小)。
预测这样的结果,同样与搜索引擎作弊、关键词堆砌现象严重,致使搜索引擎对title标签中检索词的出现和词频重视程度降低,title标签中检索词是否出现和词频是否较高,对搜索结果的排序影响不大。但另一方面,title标签内容的长度和检索词出现位置却与检索结果显著相关,说明对网页资源的元数据描述进行优化将对检索结果的排名具有积极影响,资源描述的规范化和最优化将有助于搜索引擎和最终用户识别和利用网页资源的内容。
4 结 语
本文通过对网页资源HTML元数据使用和优化情况的调查,分析了元数据描述的使用现状及其对搜索结果排序的影响。目前,Keywords、Description等元数据标签的使用仍未达到普及。由于搜索引擎作弊现象严重,也使搜索引擎排序算法中赋予元数据描述的权重越来越低,元数据中,关键词是否出现及其词频对排序结果的影响越来越小。但元数据的描述仍十分必要,规范化和优化网络资源的元数据描述,将有助于网页资源在检索结果中提高排名,有助于搜索引擎和最终用户识别和利用网页资源的内容。介于此,网页编写者应在今后的工作中注意以下几个方面的问题:
41 注意元数据标签的使用
在网页编写过程中,进一步提高元数据标签的使用率,使网页资源得到更好的揭示,帮助搜索引擎和最终用户识别和理解网页资源的核心内容。提高网页资源与特定需求的相关性。
42 提高网页编写的规范化水平
在网页编写过程中,注意HTML语言的特定格式和书写规范,减少网页内容中错误和乱码,增加网页内容的可读性,帮助搜索引擎准确定位网页内容的关键信息。
43 注意网页资源元数据描述的优化
采取合理方法,优化网页资源元数据描述,使网页资源的核心内容更加突出,更具有可读性和吸引力,从而使网页资源与特定主题相关度更好,提高在搜索引擎结果中的排名。
44 严禁各种形式的搜索引擎作弊行为
严禁利用关键词堆砌、大量使用不相关热门关键词等行为进行搜索引擎作弊,影响搜索结果的公正准确。元数据描述作为网页资源揭示的重要手段,其意义和权重不应被忽视。网页资源的描述和优化者应规范自身行为,净化元数据描述,使排序结果能够真实反映网页资源与特定主题的相关度。从而使搜索引擎和用户可以信赖元数据描述的内容,提高排序算法对元数据标签的支持,使元数据描述发挥其应用的效力。
参考文献
[1]吴泽欣.SEO教程:搜索引擎优化入门与进阶[M].北京:人民邮电出版社,2008.12.
[2](美)维尼.登上Google之巅——SEO技巧与技术[M].北京:机械工业出版社,2009.1.
[3]杨志.元数据标签Keywords在搜索引擎的应用现状研究[J].现代情报,2007,(9):134-137.
[4]杨志.元数据在中文搜索引擎的应用研究[J].科技信息,2008,(9):55-56.
[5]许四洋,柳晓春.元数据标签的使用情况调查(上)[J].图书馆杂志,2001,20(9):22-25.
[6]许四洋,柳晓春.元数据标签的使用情况调查(下)[J].图书馆杂志,2001,20(10):29-30.
[7]林华.解析HTML头信息[J].零陵学院学报,2004,(3):96-97.
[8]游,赵荣.我国元数据研究现状与发展[J].图书情报工作,2008,(Z1):202-205.
[9]粟慧.元数据、HTML和都柏林核心集——关于WEB网页的编目[J].情报科学,2001,(12):1272-1279.
[10]赵悦.数字图书馆元数据应用研究[D].武汉:武汉大学,2005.
数据结构中排序方法 篇4
1 问题定义
定义1、假设D是一个数据库, 包含x个文本型及数值型属性A={A1, A2, !, Am}, n条元组T={T1, T2, !, Tn}, 设Q为D上的一个模糊查询, 如果数据库D中存有海量数据信息, 那么查询后将得到很多足该查询要求的元组, 这种情况即为模糊查询下多查询结果问题。
2 隶属度排序
(1) 属性权重系数。
一个关系中所有属性都是不一样的, 根据对于用户的重要程度, 有的划为重要属性, 有的划为次要属性。本文描述的问题则是由属性权重系数来衡量属性的重要程度的。如果在历史查询记录里, 用户在某些属性上查询的次数越多, 则证明该属性在关系中比较重要, 那么就应该分配比较高的权重系数。反之, 则只能分配较低的权重系数。因此, 根据历史记录里某属性上查询次数来确定权重系数。设F (Ai) 是历史查询记录里在属性Ai上查询的次数, N是查询总数, 那么, Ai的权重系数确定方法如下:
(2) 隶属度排序。
元组对模糊查询的隶属度越高, 那么排序的分值越大。例如:模糊查询“City=Kirkland and View=Oceanv iew and Price close to 3500”, 查询后得到结果, 元组中Price上的属性值都在3400~3600范围内, 计算出每个元组的隶属度, 进而对模糊查询的结果进行自动排序。但是, 经过隶属度排序之后, 查询得到的结果会被划分为许多具有高低不同隶属度的元组集合。这些集合里还会存在具有相同隶属度的元组, 因此还有进一步区分每个集合中隶属度相同的元组。
3 实验分析
(1) 实验环境。
实验数据采用某房地产销售数据库, 选择seattle城市, 经模糊查询后, 元组中约有6万条查询结果, 历史记录中包含200多条指定里几个属性的查询, 在原始数据群里提取5个测试数据集, 把每个测试集大小定为50条元组, 利用5个查询测试条件。每个测试条件Qi对应数据集Hi, 其中包含与Qi相关和无关的元组集合。
(2) 测试排序质量。
由于没有具体的排序质量评估标准, 因此只能以用户对查询结果排序的满意程度来大体的评估排序质量。在上述实验环境下, 对于测试条件Qi, 从Hi中选取与查询条件最为贴合的10个元组进行排序, 在此基础上应用DPR, PR和QFIDF三种排序方法, 比较排序质量。
模糊查询最后是根据阈值和隶属函数将模糊条件变为精确数值区间的, 因此变化厚度查询条件再作为PR和QFIDF方法的查询条件, 从而不论是准确查询还是模糊查询都能得到同样的结果, 最后评估其模糊查询后的排序质量, 对比结果如图1所示。
从图示对比结果来看, DPR排序方法的排序质量较高, PR、QFIDF两种方法排序质量较低。
假定不考虑模糊查询的情况下, 也不考虑隶属度排序对于三种方法排序质量的影响, 只在精确查询的情况下, 对比这三种排序算法的排序质量, 其对比结果如图2所示。
从图示对比结果来看, 在不考虑模糊查询的情况下, 也不考虑隶属度排序对于三种方法排序质量的影响, DPR方法与其两种排序方法相比, 在排序质量上分别提高了约2%~10%, 很明显, 要优于QFIDF排序方法。因此, 可以得出结论, 无论是在模糊查询结果排序方面, 还是在精确查询结果排序方面, DPR排序算法相比较PR和QFIDF两种排序方法, 有着较为明显的优越性。
4 结语
本文根据多年的计算机数据库技术经验, 及参阅了大量的资料和有效数据之后, 对于数据库模糊查询下多结果的自动排序方法基于模糊集理论, 提出了隶属度排序方法。基于PIR改进模型及历史查询记录等来多元化的分析元组中被查询的指定属性值和未指定的属性值他们之间的关联程度, 提出了改了模型排序方法。两种方法综合使用成为了DPR排序方法。经过实验, 数据表明, 对于数据库模糊查询结果的自动排序, DPR排序方法有着较高的排序质量。
参考文献
[1]孟祥福, 马宗民, 严丽.数据库模糊查询结果自动排序方法[J].东北大学学报 (自然科学版) , 2008 (7) .
数据结构中排序方法 篇5
sort()方法排序列表中的对象,比较使用func(如果给定),
语法
以下是sort()方法的语法:
list.sort([func])
参数
func -- 这是一个可选参数,如果有将使用该函数,对列表中的对象进行排序
返回值
此方法不返回任何值,但是从列表中给定的对象进行排序
例子
下面的例子显示了sort()方法的使用
#!/usr/bin/pythonaList = [123, ‘xyz‘, ‘zara‘, ‘abc‘, ‘xyz‘];aList.sort();print “List : ”, aList;
当我们运行上面的程序,它会产生以下结果:
位图数据结构在排序算法中的应用 篇6
对一个文件进行排序, 文件中包涵一个电话号码集, 每个电话号码都是7位的整数, 不存在重复的电话号码。要求:考虑文件的输入输出时间及排序所用时间, 并且只能使用1MB的内存。
对上面的问题我们要有一个准确的理解:第一, 输入是一个无序的7位整数的集合, 并且集合中不存在相同的数据, 每有其他数据与该整数相关联。第二, 输出的是一个有序的整数列表。第三, 最多有1MB的内存可以使用。并且要考虑算法的运行时间。下面我们来看几种排序方法:
第一种归并排序, 归并排序是多次将两个或两个以上的有序表合并成一个新的有序表。最简单的归并是直接将两个有序的子表合并成一个有序的表。通过分析这道题不可能只是最简单的归并, 如果用归并排序将多次进行归并如图1。
从图1中可以看到使用归并排序读入输入文件一次, 然后在工作文件的帮助下完成排序并写入输出文件一次。工作文件需要多次读写并进行多次归并, 这样无论从时间还是内存开销都不能满足题目的要求。
第二种神奇排序, 所谓神奇排序就是利用位图结构来进行排序。设计如图2的排序方法。
读取输入文件仅一次, 且不使用中间文件。此方法只有在输入文件中的所有整数都可以在可用的1MB内存中表示的时候才能够实现该方案。使用位图或位向量表示集合。例如可用一个10位长的字符串来表示一个所有元素都小于10的简单的非负整数集合。可以用如下字符串来表示集合{1, 2, 4, 7, 9, }:
代表集合中数值的位都置为1, 其他所有的位都置为0。
现在的问题是如何用大约800万个可用位来表示最多1000万个互异的整数。使用位图表示1000万个数需要1000万个位 (125万个字节) , 考虑到没有以数字0或1开头的电话号码, 我们可以将内存需求降低为100万字节。如果不是电话号码, 是0至9999999的整数还是用1MB的内存空间来排序, 那么我们可以考虑采用两趟算法, 首先使用5000000/8=625000个字的存储空间来排序0至4999999之间的整数, 然后在第二趟排序5000000至9999999整数。k趟算法可以在kn的时间开销和k/n的空间开销内完成对最多n个小于n的无重复正整数的排序。
存储空间的问题解决了, 下面的问题就是编写程序。若给定表示文件中整数集合的位图数据结构, 则可以分三个阶段来编写程序。第一阶段将所有的位都置为0, 从而将集合初始化为空。第二阶段通过读入文件中的每个整数来建立集合, 将每个对应的位都置为1。第三阶段检验每一位, 如果该位为1, 就输出对应的整数, 由此产生有序的输出文件。令n为位向量中的位数 (在本例中为10000000) , 程序可以使用伪代码表示如下:
位图数据结构在排序算法中的特殊应用是利用排序问题中不常见的三个属性:第一输入数据限制在相对较小的范围内 (这也是编写软件时最多的设计方法) ;第二数据没有重复;第三对于每条记录而言, 除了单一数据外 (此题为单一的整数) , 没有任何其他关联数据。此文希望给大家一个帮助, 在写算法时能根据实际问题实现最有效的时间─空间折中与双赢。
摘要:对有限定义域内的稠密集合, 如果我们要对这些数据写一个排序算法, 要求用非常快的方法并使用最小的内存来完成, 位图数据结构在排序中具有神奇应用。
数据结构中排序方法 篇7
随着科技的不断发展, 计算机的应用领域越来越广, 但由于计算机硬件的速度和存储空间的有限性, 如何提高计算机速度并节省存储空间一直成为软件编制人员努力的方向, 在众多措施中, 排序操作成为程序设计人员考虑的因数之一, 排序方法选择得当与否直接影响程序执行的速度和辅助存储空间的占有量, 进而影响整个软件的性能。数据分类也是一个值得优化的问题, 本文将对上述问题进行阐述。
1、相关技术介绍
1.1 排序算法
所谓排序, 就是使一串记录, 按照其中的某个或某些关键字的大小, 递增或递减的排列起来的操作。输入一列数<a1, a2, …, an>, 输出对输入序列的一个变换 (重排列) <a1’, a2’, …, an’>, 其中a1’≤a2’≤…≤an’。
1.2 QT介绍
Qt是诺基亚开发的一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的, 很容易扩展, 并且允许真正地组件编程。
2、排序算法性能分析
根据各种排序算法的性能比较, 每种排序算法都各有优缺点, 没有哪一种方法是绝对最优的, 如何在实际应用中选择合适的排序算法, 选择的依据是否就是算法的平均时间复杂度"O", 事实上对排序的效率来说, 影响它的因素非常多, 平均时间复杂度最优的算法在进行某一些实际数据排序时, 其时间并不一定是最优的。而平均时间复杂度差的算法, 有可能更加适合某一些具体的情况。一般而言, 可依据以下准则进行排序算法的选择。
(1) 一般不使用或不直接使用“原始”的冒泡排序算法冒泡排序虽然容易理解, 编程简单, 但在实际应用中, 是不可取的。
(2) 快速排序和堆排序适用于大数据且空间复杂度有要求的情况下快速排序和堆排序平均时间复杂度都为O (nlogn) , 对于基于比较的排序算法而言, 其平均时间复杂度的下限为O (nlogn) , 不可能找到比这更优的算法。
(3) 插入排序最适用于加入新数据的情况对于插入排序算法, 由于它对数据的有序性非常敏感。
(4) 基数排序适用于大数据量且有较多内存空间的情况, 它的平均时间复杂度是。但是, 在进行的过程中, 需要额外的空间, 且所需的空间和数据个数相当, 所以应用这种排序算法的前提是要能使用附加空间。
3、算法演示系统
本演示程序使用QT设计图形界面, 通过调用指定排序算法处理输入数据并输出排序过程达到演示的目的。首先, 在“Data Input”区域输入待排序的数据, 或者通过点击“Select File”按钮选择文件充当输入数据, 然后在“Select Sort Model”处选择排序方式后, 就可以点击“Start”按钮开始演示过程。演示结果在程序左侧的“Demonstrate”区域显示, 部分关键数据以红色显示。
4、关于数据分类
本文所阐述的数据分类, 是指将数据按照类型和属性分类。算法描述如下:
Step 1:获取需要分类的数据。
Step 2:处理获得数据每一项的类型和种类
Step 3:设置数据的优先级
Step 4:for i=0 to Set the priority number
Queue<Type>q[Type number]
Push to the correspond queue
Pop the data to the initialization queue
以学生信息为例, 每个学生有对应的信息 (专业、班级、姓名、性别、民族、政治面貌、省份) 。在乱序的数据中, 设置排序的优先级为学生省份、学生班级、学生性别。则该算法处理后的程序会按照设置的优先级分好类。分析本算法的复杂度, 只需要O (kn) , k为需要设置优先级的数据类型, n为需要分类的数据项。而普通的朴素的算法需要的复杂度为O (nlogn) 。使用类似于基数排序的算法在数据分类上, 能比较有效的提高数据分类的效率。
5、结论
完成了一套排序算法的演示程序, 可以实际的运用到课堂教学中提高教学效率。同时完成了一个使用基数排序类似算法进行数据分类的程序。
参考文献
[1]刘红岩, 陈剑, 陈国青.数据挖掘中的数据分类算法综述[J].清华大学学报 (自然科学版) , 2002, 42 (6) :727-730.
[2]严蔚敏, 吴伟民.数据结构[M].北京:清华大学出版社.1997.4
[3]徐章艳, 刘作鹏等.一个复杂度为max (O (|C||U|, O (|C|2|U/C|) 的快速属性约简算法[J].计算机学报, 2006, 29 (3) :391-399.
【数据结构中排序方法】推荐阅读:
数据结构教学方法07-21
数据结构中教学改革07-07
《数据结构》实验教学方法探讨的教育论文12-09
浅论环境统计中数据的审核方法10-12
对Excel内的单元格数据进行笔画排序07-09
三种实现方法实现数据表中遍历寻找子节点06-25
在Excel中查找重复数据与删除方法excel办公/数码06-01
龙教版信息技术第四册数据排序与筛选教案11-10
估值类数据同化方法中背景场的确定-三维可分离的情况06-08
数据逻辑结构08-25