共查询到20条相似文献,搜索用时 31 毫秒
1.
归并排序是一种稳定.高效的排序算法。归并排序算法一般是用顺序存储结构实现的。如Sun公司JDK中Java Collection库中对数组、List的排序。使用顺序存储结构实现归并排序需要空间复杂度为O(n)的辅助存储空间,对于链表来说,还需要转换为顺序存储结构,所以共需要2n的辅助存储空间。本文提出一种链表非递归归并排序算法,可以对链表进行原地(In Place)排序,只需要O(logn)辅助存储空间,时间复杂度不变。 相似文献
2.
深度优先稳定原地归并排序的高效算法 总被引:1,自引:0,他引:1
基于分治策略,使用深度优先的方法,提出了一种用于线性表的稳定原地归并排序算法,其时间复杂度为O(n lb n),辅助空间复杂度为O(1),递归栈空间复杂度为O(lb n),同时进行了算法分析和实验测试。实验结果表明,该算法效率较STL中的稳定原地归并排序算法有67.51%的提升,解决了稳定排序算法中要么时间复杂度高要么空间复杂度高的问题。 相似文献
3.
《计算机工程与科学》2014,(1)
单向链表广泛应用于动态存储结构,当前单向链表的排序算法普遍效率偏低,而平均效率最高的快速排序算法并不适用于单向链表。基于分治策略,使用递归方法,通过重新链接单向链表节点,提出了用于单向链表的快速排序算法,其平均时间复杂度为O(nlog2n),辅助空间复杂度为O(0),平均递归栈空间复杂度为O(log2n);同时,进行了算法分析和实验测试,其效率较其它单向链表排序算法有较大提高,且较传统基于线性表的快速排序算法也有一定提高。研究结果解决了当前单向链表排序效率较低的 相似文献
4.
单向链表快速排序算法 总被引:2,自引:0,他引:2
单向链表广泛应用于动态存储结构,当前单向链表的排序算法普遍效率偏低,而平均效率最高的快速排序算法并不适用于单向链表。基于分治策略,使用递归方法,通过重新链接单向链表节点,提出了用于单向链表的快速排序算法,其平均时间复杂度为O(nlog2n),辅助空间复杂度为O(0),平均递归栈空间复杂度为O(log2n);同时,进行了算法分析和实验测试,其效率较其它单向链表排序算法有较大提高,且较传统基于线性表的快速排序算法也有一定提高。研究结果解决了当前单向链表排序效率较低的问题。 相似文献
5.
关键路径求解的新算法 总被引:7,自引:2,他引:7
关键路径通常是在拓扑排序的基础上求得的。文中在按广度优先搜索基础上,提出了一种新的求解关键路径的算法,该算法采用图的十字链表结构形式,不需要进行拓扑排序,算法的时间复杂度为O(n e),较传统的算法效率更高。 相似文献
7.
李崇 《电脑编程技巧与维护》2016,(11):16-17
链表是一种较为复杂的数据结构,而基于链表的排序算法更是让人难以理解,且普遍效率较低,但其运用却极其广泛.通过对基于单向链表的插入排序算法进行剖析,继而归纳出其与顺序存储结构上实现插入排序算法的区别与优势,并从时间复杂度、空间复杂度与稳定性进行比较,体现出其优越性能和实现技巧. 相似文献
8.
9.
该文给出基因组Transhocation排序问题的一个改进多项式算法,原算法所有存储空间O(n),时间复杂度为O(n^3),文中改进算法仍采用O(n)存储空间,时间复杂度为O(n^2logn),具体地,将计算Translocation距离的时间复杂度由O(n^3)改进为O(n^2),将计算Translocation序列的时间复杂度由O(n^3)改进为O(n^2logn). 相似文献
10.
通过定义节点编码图概念,提出一种不需要拓扑排序的求解关键路径的新算法。该算法扩充图的邻接表的存储结构,使图的存储与算法求解过程共享同一存储空间。从图的源节点开始,用加权取极大运算规则,广度优先递归对图中所有节点进行编码。编码图生成后,利用反向搜索求出从源点到汇点的所有关键路径及长度。该算法比现有算法更简单直观,所需的存储空间更小,算法时间复杂度降低到O(n+e),优于现有算法的O(n2)。 相似文献
11.
申晓 《电脑编程技巧与维护》2004,(2):41-42
现在最快的排序算法是快速排序算法,它的时间复杂度达到O(n log n)。但是还有一种排序算法,就是Flashsort排序算法。它的时间复杂度达到O(n),超过了前者。FlashSort排序是基于分类的算法,它的实现思想很简单,是利用构造出来的索引来排序。举一个简单的例子,比如有一百个整数,你很容易就能把它们放在数组的正确位置上,根本不需要作任何比较。 相似文献
12.
申晓 《电脑编程技巧与维护》2004,(2)
现在最快的排序算法是快速排序算法,它的时间复杂度达到O(n log n)。但是还有一种排序算法,就是Flashsort排序算法。它的时间复杂度达到O(n),超过了前者。FlashSort排序是基于分类的算法,它的实现思想很简单,是利用构造出来的索引来排序。举一个简单的例子,比如有一百个整数,你很容易就能把它们放在数组的正确位置上,根本不需要作任何比较。 相似文献
13.
14.
变换存储结构的一种高效排序算法 总被引:2,自引:0,他引:2
给出变换存储结构的一种高效排序算法 ,该算法的时间复杂度为 O(n) ,且与待排序数据的分布无关 .给出了该排序算法的描述 ,并在时间复杂度和空间复杂度两方面与其他排序算法作了比较 相似文献
15.
16.
线性表上进行的直接插入排序法是一种较简单的内部排序算法,计算机工作者经常研究和讨论顺序表中直接插入排序算法的实现及其改进,很少研究直接插入排序法在链表上的实现。本文讨论了直接插入排序在单链表上和静态链表上的算法及实现过程。最后分析了算法时间复杂度和空间复杂度。 相似文献
17.
众所周知,排序速度的快慢,取决于排序算法的时间复杂度和空间复杂度。因而,排序算法设计的主导思想,就是要千方百计降低算法的时间复杂度和空间复杂度。虽然计算机硬件的运算速度越来越快,但排序算法的研究仍是算法理论中的一个重要课题。已有的排序算法很多,在所有基于“记录关键字之间比较”的排序方法中,快速排序(quick sort)是平均时间性能最好的一种方法,平均时间为O(n*log n)。但是在最坏情况下,时间复杂度却很高,为O(n^2)。 相似文献
18.
一种新的分"档"置换插入排序算法 总被引:1,自引:0,他引:1
近年来,人们提出了众多时间复杂度为O(n)的排序算法.但分析研究结果表明,上述排序方法都不同程度上存在着以下两点不足:(1)附加存储空间开销大,(2)排序效率过分依桢于关键字的均匀分布.基于此,表文提出了一种由分“档”、整体置换和局部直接插入排序所组成的新排序算法——分“档”置换插入排序法.算法分析和实验结果都表明:该排序方法与待排序数据分布无关,其时间复杂度为O(n),而附加存储空间开销少于0.5n,同时排序速度明显优于QuickSort、HeapSort、按字节桶分配链接排序、ProportionSplitSort等算法. 相似文献
19.
介绍一种新的并行排序算法,该算法以双调归并排序为基础,运用图形硬件的并行体系结构和二叉排序树数据结构的优点,用部分并行代替所有阶段的顺序执行,对双调排序算法进行优化.对该算法进行分析,在理论上n个序列在P个流处理器上的排序,最优的时间复杂度为O((nlogn)/p).实验测试结果表明,优化后的算法比其它基于图形硬件的双调归并排序算法所用时间短. 相似文献
20.
基于数组的桶排序算法 总被引:1,自引:0,他引:1
经典桶排序算法以链表形式实现"桶",处理均匀数据效率很高,是O(N)算法 .但对极不均匀数据则退化成低效的O(N2)插入排序 .讨论了记录携带附加数据的计数排序算法,将"桶"实现为顺序数组,避免链表的动态内存分配直接提高算法效率,并允许快排等O(N log N)算法处理桶内数据 .对均匀数据仍然保持O(N)时间复杂度,对极端不均匀数据则只退化为O(N log N)的原算法 .对一般非均匀数据,证明数组桶排序算法总体性能高于经典算法 .均匀数据实验表明,桶排序算法明显优于Linux下标准qsort系统调用,且数组桶排序算法效率更高 .而在非均匀的正态数据实验中数组桶算法性能下降明显小于经典桶排序,总体效率仍然优于qsort的直接应用 . 相似文献