Engineering Faster Sorters for Small Sets of Items
对一组项进行排序是一项任务,它本身就很有用,也可以作为更复杂操作的构建块。这就是为什么人们投入了大量的精力来寻找尽可能快地对大集合进行排序的排序算法。但是,算法变得越复杂和复杂,由于大的常数因子,它们对于小的项目集合的效率就越低。我们的目标是确定是否有一个更快的方法比插入排序的小项目集,以提供一个更有效的基本情况排序。我们研究了排序网络,研究了它们如何提高对少数元素进行排序的速度,以及如何通过使用条件移动以有效的方式实现它们。由于排序网络需要为每个集合大小显式地实现,因此由于增加的代码大小,为更大的大小提供网络变得效率较低。为了能够对稍大的基本情况进行排序,我们将样本排序调整为寄存器样本排序,将这些较大的集合分解为可以由排序网络进行排序的大小。从我们的实验中,我们发现,当只对小集合进行排序时,排序网络在6到16之间的任何数组大小上都优于插入排序至少1.76倍,在所有机器和数组大小上平均优于插入排序2.72倍。当将排序网络作为基本情况排序器集成到Quicksort中时,我们实现的性能改进要少得多,这可能是由于网络具有更大的代码大小和混乱的L1指令缓存。但是对于具有64 KiB或更大L1指令缓存的x86机器,当使用排序网络作为std::sort中的基本情况排序器时,我们获得了12.7%的加速比。总之,只有在特殊情况下才能实现所需的速度提高,但结果清楚地表明了在排序算法领域使用条件移动的…
2020-10-02 cs.DS
QuickXsort - A Fast Sorting Scheme in Theory and Practice
QuickXsort是一种高效的就地顺序排序方案,它将Hoare的Quicksort算法与X混合在一起,其中X可以从更广泛的其他已知排序算法中选择,如Heapsort,Insertionsort和Mergesort。它的主要优点是QuickXsort可以在X没有的情况下就位。在这项工作中,我们提供了一般的转移定理表示的比较的QuickXsort的X的数量的比较。更具体地说,如果选择枢轴作为(不太快)增长大小样本的中位数,则QuickXsort和X的平均比较次数仅相差$o(n)$项。对于某些常数$k$的$k$的中值主元选择,差是一个线性项,我们精确计算其系数。例如,三个QuickMergesort的中位数最多使用$n \lg n - 0.8358n + O(\log n)$比较。此外,我们还研究了使用更少比较的其他算法对基本情况进行排序的可能性。通过这样做,比较的平均情况数量可以减少到$n \lg n- 1.4106n + o(n)$,剩余的间隙仅为$0.0321n$与已知下限的比较(同时总体上仅使用$O(\log n)$额外空间和$O(n \log n)$时间)。这些排序策略的实现表明,这些算法挑战了成熟的库实现,如Musser的Introsort。
2018-11-03 cs.DS
Sorting under Partial Information with Optimal Preprocessing Time via Unified Bound Heaps
Institute of Science and Technology Austria(奥地利科学技术研究所)
本文提出在部分信息下排序的最优预处理时间算法,利用统一界堆数据结构,实现O(m)预处理时间和O(log e(G))排序时间。
2026-10-09 cs.DS
Pbit and other list sorting algorithms
Pbit除了简单之外,绝对是最快的列表排序算法。它大大超过了所有已知的方法。在许多优点中,它是稳定的,线性的,并且可以在适当的位置运行。我将比较Pbit和Donald E. Knuth在《计算机程序设计的艺术》第三卷和其他(QuickerSort,MergeSort)列表排序算法中的应用。
2006-01-16 cs.DS
Adaptive Shivers Sort: An Alternative Sorting Algorithm
我们提出了一个稳定的合并排序算法,称为\Adaptive颤抖排序,利用存在的单调运行有效地排序部分排序的数据。我们还证明,虽然该算法是简单的实现,其计算成本,在进行比较的数量,是最佳的一个小的添加剂线性项。
2020-09-08 cs.DS
Even faster sorting of (not only) integers
本文介绍了基于基数算法的最快并行排序器RADULS 2。它经过优化,可以利用现代多核CPU处理大量数据。主要创新包括:非常优化的算法,用于处理可能出现数十亿次的小数组(多达约100个记录),作为子问题处理,并改进了更大子数组的处理,更好地使用非临时内存存储。
2017-03-02 cs.DC cs.DS
List Sort: A New Approach for Sorting List to Reduce Execution Time
本文提出了一种基于动态内存分配的排序算法--列表排序算法。在这项研究中,我们还展示了各种有效的排序技术与列表排序的比较。由于列表排序的动态特性,它比一些传统的比较排序技术快得多,可以与快速排序和合并排序相媲美。列表排序利用已经按升序或降序排序的数据。
2013-10-26 cs.DS
Faster Prefix-Sorting Algorithms for Deterministic Finite Automata
本文研究DFA的最小宽度偏反词典序计算,利用新组合性质提出任意DFA的$O(mn)$、$O(n^2\log n)$排序算法及无环DFA的$O(m\log n)$算法,并验证其实用性。
2023-04-21 cs.DS
DPG: A Cache-Efficient Accelerator for Sorting and for Join Operators
我们提出了一种新的算法,快速记录检索,分布式探测收集,或DPG。DPG在排序和连接中都有重要的应用。当前的主存排序算法将其工作分为三个阶段:提取键-指针对;对键-指针对进行排序;以及根据排序后的键-指针对将原始记录复制到目标数组中。最后阶段的复制占据了今天的排序时间。因此,在第三阶段中使用DPG为现有的排序算法提供了加速器。DPG还为外键连接提供了两种新的连接方法:DPG-move join和DPG-sort join。使用DPG产生的连接方法更快,因为DPG连接是高速缓存高效的,同时DPG连接避免了排序或哈希的需要。外键连接的思想也可以扩展到更快的记录对检索的空间和时间数据库。
2003-08-02 cs.DB cs.DS
Information-theoretic lower bounds for quantum sorting
我们分析了部分信息下排序的量子查询复杂度。在这个问题中,我们给出了一个偏序集$P$,并要求使用成对比较来识别$P$的线性扩展。对于标准的排序问题,其中$P$是空的,它是已知的量子查询的复杂性是不是渐近小于经典的信息理论的下限。我们证明这适用于广泛的一类偏序集,从而改进了Yao(STOC'04)的结果。
2019-02-18 cs.CC cs.DS math.CO
Single-Source Bottleneck Path Algorithm Faster than Sorting for Sparse Graphs
在有向图$G=(V,E)$中,每条边都有容量,两个顶点之间的\emph{bottleneck path}(或\emph{widest path})是最大化路径中边的最小容量的路径。对于有向图中此问题的单源所有目的地版本,以前的最佳算法在$O(m+n\log n)$($m=|E|$和$n=|V|$)时间内运行,通过使用Fibonacci堆的Dijkstra搜索[Fredman and Tarjan 1987]。我们将这个时间限制改进为$O(m\sqrt{\log n})$,从而它是第一个在$m=o(n\sqrt{\log n})$时突破经典Fibonacci堆时间限制的算法。这是一种Las-Vegas随机方法。相比之下,s-t瓶颈路径具有运行时间为$O(mβ(m,n))$的算法[Jumhik et al. 2016],其中$β(m,n)=\min\{k\geq 1: \log^{(k)}n\leq\frac{m}{n}\}$。
2018-08-31 cs.DS
Towards Parallel Learned Sorting
我们介绍了一种新的排序算法,即ML增强排序与原地超级标量样本排序(IPS4o)的组合。我们的工作的主要贡献是实现并行ML增强排序,因为以前的算法仅限于顺序实现。我们介绍了就地并行学习排序(IPLS)算法,并广泛比较它对其他排序方法。IPLS将IPS4o框架与使用最快最小冲突度算法训练的线性模型相结合,以划分数据。实验结果并没有证明IPLS是最快的算法。然而,他们确实表明IPLS在同行中具有竞争力,并且使用IPS4o框架是一种有前途的并行学习排序方法。
2022-08-14 cs.DC cs.DS
Sort Race
排序是最古老的计算问题之一,在大数据时代仍然非常重要。已经提出了各种算法和实现技术。在这项研究中,我们专注于比较为基础,内部排序算法。我们创建了12种不同大小的数据类型用于实验,并在单个设置中广泛测试了各种实现。使用一些有效的技术,我们发现快速排序是自适应的近排序的输入,仍然是最好的整体排序算法。我们还确定了哪些技术在timsort中有效,timsort是基于自然mergesort的最流行和最有效的排序方法之一,并创建了我们的mergesort版本,它在接近排序的实例上运行速度比timsort快。我们的quicksort和mergesort实现与所有教科书或研究文章中报道的其他实现不同,比任何版本的C库qsort函数都快,不仅适用于随机生成的数据,而且适用于各种类型的近似排序数据。这个实验可以帮助用户选择最好的排序算法来处理手头的困难排序工作。这项工作提供了一个平台,任何人都可以测试自己的排序算法对最好的领域。
2016-09-14 cs.DS
Worst-Case Efficient Sorting with QuickMergesort
排序问题的两个最突出的解决方案是Quicksort和Mergesort。虽然快速排序平均速度非常快,但合并排序还提供了最坏情况的保证,但需要额外的空间来存储线性数量的元素。然而,最坏情况下的有效就地排序仍然是一个挑战:标准解决方案Heapsort存在缓存行为不佳的问题,并且对于缓存内实例来说也不是太快。在这项工作中,我们提出了中位数的中位数QuickMergesort(MoMQuickMergesort),QuickMergesort的一个新的变种,它结合了Quicksort与Mergesort允许后者实施到位。我们的新变体应用中位数的中位数算法选择枢轴,以规避二次最坏的情况。事实上,我们表明,它最多使用$n \log n + 1.6n$比较$n$足够大。我们通过实验证实了理论估计,并表明新算法的性能优于堆排序,并且仅比Introsort(stdlibc++的std::sort实现)慢10%左右,这对最坏情况的保证相当差。我们还模拟了最坏的情况,它只比平均情况慢10%左右。特别是,新算法是一个自然的候选人,以取代堆排序作为一个最坏情况下的塞子在Introsort。
2018-11-02 cs.DS
Sorting under Partial Information (without the Ellipsoid Algorithm)
我们重新审视了部分信息下的著名排序问题:给定一些元素对之间的比较结果,对有限集合进行排序。输入是一个偏序集P,解决这个问题相当于使用成对比较发现P的未知线性扩展。在最坏情况下所需的比较次数的信息论下限是log e(P),即P的线性扩展数的二进制对数。系统科学51(3),390 - 399,1995)表明,存在用于实现该约束到常数因子的问题的多项式时间算法。他们的算法在每次迭代时调用椭球算法来确定下一次比较,这使得它不切实际。我们开发了有效的算法下的部分信息排序。像Kahn和Kim一样,我们的方法依赖于图熵。然而,我们的算法在本质上与他们的算法不同。而不是诉诸凸规划计算熵,我们近似的熵,或确保它只计算一次,在一类受限制的图,允许使用一个更简单的算法。具体而言,我们提出:时间复杂度:O(n)时间复杂度:O(n)我们所有的算法都可以以这样一种方式实现,即它们的计算瓶颈被限制在预处理阶段,而排序阶段在O(q)+O(n)时间内完成,其中q表示执行的比较次数。
2013-01-21 cs.DM cs.DS
On the Optimisation of the GSACA Suffix Array Construction Algorithm
后缀数组可以说是序列分析中最重要的数据结构之一,因此存在大量的后缀排序算法。然而,到目前为止,2015年引入的GSACA算法是唯一已知的非递归线性时间后缀数组构造算法(SACA)。尽管其有趣的理论特性,一直很少努力提高算法的低于现实世界的性能。有一种超线性算法DSH,它依赖于相同的排序原理,比DivSufSort更快,DivSufSort是十多年来最快的SACA。本文分析了GSACA和DSH中的排序原理,并利用其性质给出了一个优化的线性时间算法。我们得到的算法不仅比GSACA快得多,而且优于DivSufSort和DSH。
2022-08-30 cs.DS
Shorter and faster than Sort3AlphaDev
针对AlphaDev声称3个数字排序需17条汇编指令且无更短程序的声明,本文提出两个反例及更快的C/C++实现。
2023-07-23 cs.DS
RAM-Efficient External Memory Sorting
近年来,大量的问题已经被认为是在外部存储器模型的计算,其中的复杂性措施是数据块的数量之间移动缓慢的外部存储器和快速的内部存储器(也称为I/O)。然而,在实践中,一旦获得I/O效率,内部存储器时间通常占总运行时间的主导地位。在本文中,我们研究的基本问题,同时是I/O高效和内存效率的RAM模型的计算算法。
2013-12-10 cs.DS
Tight Bounds for Sorting Under Partial Information
本文研究部分信息下的排序问题,提出一种预处理与查询分离的算法,在部分预言机查询、线性预言机查询和时间三个指标上均达到渐近紧界,并给出匹配下界。
2024-07-31 cs.DS
Sorting and Selection with Random Costs
除了单位成本比较模型之外,还有越来越多的关于模型分类和选择的工作。这项工作是第一次治疗的自然随机变量的问题,比较两个元素的成本是一个随机变量。每个成本都是独立选择的,并且是算法已知的。特别地,我们考虑以下三个模型:每个成本在范围$[0,1]$中均匀选择,每个成本以一定概率$p$为0,否则为1,或者每个成本以概率$p$为1,否则为无穷大。我们提出了这些问题的下限和上限(在大多数情况下是最优的)。我们通过仔细设计算法来获得我们的上界,以确保在各个阶段产生的成本是独立的,并在适当的时候使用随机偏序的属性。
2007-09-29 cs.DS
Fast and exact fixed-radius neighbor search based on sorting
针对现有固定半径近邻近似搜索索引计算重、需调参的问题,提出基于第一主成分排序结合BLAS实现的精确SNN方法,在索引与查询速度上优于暴力法和树方法,且无需调参。
2024-01-29 cs.DS cs.IR
K-sort: A new sorting algorithm that beats Heap sort for n <= 70 lakhs!
Sundararajan和Chakraborty(2007)引入了一个新版本的快速排序,删除了交换。Khreisat(2007)发现这个算法与其他版本的快速排序竞争得很好。然而,它使用辅助阵列,从而增加了空间复杂度。在这里,我们提供了新排序的第二个版本,其中我们删除了辅助数组。这个算法的第二个改进版本,我们称之为K-sort,发现对于均匀U[0,1]输入的相当大的数组大小(n <= 70,00,000),排序元素的速度比堆排序快。
2011-07-19 cs.DS
Real-Time Sorting of Binary Numbers on One-Dimensional CA
提出了一种新的基于一维元胞自动机的二进制数快速(实时)分类器。它对一个由k位表示的n个数字的列表进行排序,每个数字都有nk步。这只比下限多了一步。
2010-12-03 cs.DS nlin.CG
Median Filtering is Equivalent to Sorting
这项工作表明,以下问题是等价的,无论是在理论上和实践中:-中值滤波:给定一个$n$元素向量,计算滑动窗口中值与窗口大小$k$,-分段排序:给定一个$n$元素向量,将其划分为$n/k$块的长度$k$和排序每个块。通过先前的工作,中值滤波至少与分段排序一样困难:通过单个中值滤波操作,我们可以对长度为$Θ(k)$的$Θ(n/k)$块进行排序。目前的工作表明,中值滤波也一样容易分段排序:我们可以做一个分段排序操作和线性时间后处理中值滤波。特别是,中值滤波可以直接受益于大量的文献排序算法-例如,自适应排序算法意味着自适应中值滤波算法。减少是非常有效的,在实践中-随机输入的新的排序为基础的算法的性能与最快的堆为基础的算法,并为良性的数据分布,它通常优于以前的算法。关键的技术思想是,我们可以用一对排序的双向链表来表示滑动窗口:我们从一个链表中删除项目,并向另一个链表中添加项目。删除很容易;如果我们把时间颠倒两次,就可以有效地完成添加:首先,我们构造完整的列表,然后以相反的顺序删除项目。然后我们用Knuth的跳舞链接技术来撤销每个删除。
2014-06-06 cs.DS
Galloping in fast-growth natural merge sorts
我们研究的合并例程的合并为基础的排序算法的影响。更确切地说,我们专注于TimSort用来合并单调子数组的疾驰例程,以下称为运行,以及如果使用此例程而不是简单的合并例程对执行的元素比较数量的影响。这个例程的引入是为了使TimSort在具有少量不同值的数组上更有效。唉,我们证明,虽然它使TimSort排序数组在线性时间内有两个值,它并不阻止TimSort需要多达$Θ(n \log(n))$元素比较排序数组的长度~ $n$与三个不同的值。然而,我们也证明,稍微修改TimSort的驰骋例程的结果,在最坏的情况下,只需要$\mathcal{O}(n + n \log(σ))$元素比较,当排序数组长度$n$与$σ$不同的值。我们这样做的重点是双运行,这是在20世纪90年代推出的概念,并在相关的双游程熵。这个概念既与不同值的数量有关,也与数组中运行的数量有关,它带有自己的运行长度熵,用于解释TimSort的“超自然”效率。我们还引入了自然归并排序的快速和中等增长的新概念(即,算法的基础上合并运行),这是发现在几个合并排序算法类似TimSort。我们证明,算法的快速或中等增长的属性,只要他们使用我们的变体TimSort的驰骋例程合并运行,是尽可能有效的排序数组低运行诱导或双运行诱导的复杂性。
2023-12-01 cs.DS
Fast Algorithms for Reconciliation under Hybridization and Incomplete Lineage Sorting
将基因树与物种树相结合是一项重要的任务,它揭示了基因、基因组和物种的进化,以及基因的分子功能。在某些进化事件下,如杂交、基因复制/丢失或不完整的谱系排序,已经设计了一系列广泛的计算工具来完成这项任务。在两个或两个以上的这些事件下,协调基因树与物种遗传的工作也开始出现。我们的小组最近设计了简约和概率框架,用于调和基因树与系统发育网络,从而允许在不完整谱系排序的情况下检测杂交。虽然这些框架是通用的,可以处理任何拓扑结构,但它们是计算密集型的,使其应用于大型数据集不可行。在本文中,我们提出了两种新的方法来解决这两个框架,是基于祖先配置的概念的计算挑战。我们的方法仍然计算精确的解决方案,同时提高计算时间高达五个数量级。这些在速度上的实质性提高使这些统一的协调框架适用于更大的数据集。我们讨论了基因树和系统发育网络的拓扑特征如何影响新算法的性能。我们已经在我们的PhyloNet软件包中实现了这些算法,该软件包以开源形式公开提供。
2012-12-09 cs.DS q-bio.PE
Sorting with constraints
该研究针对仅允许部分两两比较的带约束排序问题,从禁止比较对构成的图的团数、色数参数化算法,拓展至不可排序图的偏序发现,提出Erdős–Rényi图下O(n^{3/2} log n)次探测的偏序确定算法。
2025-08-31 cs.DM cs.DS
Communication-Efficient String Sorting
令人惊讶的是,在分布式内存并行机上对字符串进行排序的算法很少。我们开发了有效的算法,这个问题的基础上的多路合并原则。这些算法只检查确定排序顺序所需的字符。此外,还通过(粗略地)仅传送那些字符以及通过仅传送相同前缀的重复一次来减少通信量。在多达1280个核上的实验表明,这些算法通常比以前的算法快5倍以上。
2020-01-23 cs.DC cs.DS
Optimal antimatroid sorting
本文将拓扑堆排序推广到反拟阵结构,统一解决了由单调优先公式、弦图完美消除序和连通有根图顶点搜索序所限制的多类排序问题,并获得了最优算法。
2025-07-18 cs.DS
QuickMergesort: Practically Efficient Constant-Factor Optimal Sorting
我们认为内部排序的$n$元素序列的基本问题。在其最佳理论设置QuickMergesort中,QuickSort与Mergesort的组合以及$\sqrt{n}$的中位数枢轴选择,平均最多需要$n \log n - 1.3999n + o(n)$元素比较。本文解决的问题是如何使该算法实用。由于精细的枢轴选择通常会增加很多开销,我们发现QuickMergesort的中位数3枢轴选择导致平均最多$n \log n - 0{.}75n + o(n)$元素比较,同时在基本数据上运行速度很快。实验表明,QuickMergesort优于最先进的库实现,包括C++的Introsort和Java的Dual-Pivot Quicksort。进一步权衡低运行时间和低数量的比较进行了研究。此外,我们描述了一个实际有效的版本与$n \log n + O(n)$比较在最坏的情况下。
2018-04-26 cs.DS
Improved in-place associative integer sorting
提出了一种新的整数排序技术,以取代桶排序、分布计数排序和地址计算排序算法族,这些算法只需要固定的额外内存。该技术的灵感来自于“行为序列”的有序理论之一,并通过与认知神经科学中记忆形成和检索的三个主要阶段(即(i)练习,(ii)存储和(iii)检索)进行类比来解释。在这项研究中,该技术的改进,从理论和实践中,得到一个算法,这是比前者更快,使其更具竞争力。利用改进的版本,n个整数S[0. n-1]中的每一个都在范围[0,n-1]中精确排序,而前一种技术的复杂度是递归T(n)= T(n/2)+ O(n),产生T(n)= O(n)。
2012-09-17 cs.DS
Faster Radix Sort via Virtual Memory and Write-Combining
排序算法是常见操作(如删除重复项或数据库排序合并连接)性能的决定因素。这项工作的重点是32位整数键,可选地与32位值配对。我们提出了一个快速基数排序算法,建立在一个微架构感知计数排序的变体。利用虚拟内存并利用写组合产生对应于系统峰值内存带宽的至少88%的每遍吞吐量。我们的实现优于英特尔最近发布的基数排序的1.5倍。它也比较有利的费米GPU的算法时,数据传输开销的报告性能。这些结果表明,标量,带宽敏感的排序算法仍然具有竞争力的当前架构。各种其它存储器密集型应用可受益于本文中所描述的技术。
2010-09-06 cs.DS cs.PF
Hash sort: A linear time complexity multiple-dimensional sort algorithm
排序和散列是计算机科学中两个完全不同的概念,并且相互排斥。哈希是一种使用数据作为关键字来映射到内存中的位置的搜索方法,用于快速存储和检索。排序是将数据从随机排列组织成有序排列的过程,并且是在各种应用中频繁执行的常见活动。几乎所有传统的排序算法都是通过比较来工作的,并且在这样做的时候,算法时间复杂度有一个线性最大下限。排序算法的理论时间复杂度的任何改进都可能导致实现性能的整体更大增益。对于使用排序算法的应用程序来说,算法性能的提高会带来更大的速度提高。这种排序算法需要使用一种替代方法来对数据进行排序,而不是比较,以超过算法性能上的线性时间复杂度边界。散列排序是一种通用的基于散列的非比较排序算法,它具有一些传统排序算法所没有的有趣特性。散列排序的性能逐渐优于最快的传统排序算法快速排序。散列排序算法具有线性时间复杂度因子--即使在最坏的情况下也是如此。散列排序为进一步的工作和研究其他排序方法开辟了一个领域。
2004-08-17 cs.DS
Fast construction of FM-index for long sequence reads
总结:我们提出了一种新的方法来递增地构建短序列和长序列读段的FM索引,直到基因组的大小。它是第一个可以构建索引的算法,同时隐式地以相反的(补充)字典顺序对序列进行排序,而无需单独的排序步骤。该实现是索引短读段最快的实现之一,也是唯一一个实际上适用于平均长度的读段的实现。可用性和实施:https://github.com/lh3/ropebwt2联系方式:hengli@broadinstitute.org
2014-06-02 cs.DS q-bio.GN
Balanced Learned Sort: a new learned model for fast and balanced item bucketing
本文提出平衡学习排序模型,通过改进两层RMI并设计新算法结构实现快速均衡分桶,在33个数据集中的31个上超越6种对比排序器。
2024-07-02 cs.DS
Fast and explainable clustering based on sorting
The University of Manchester(曼彻斯特大学)
本文提出了一种名为CLASSIX的快速且可解释的聚类方法,通过排序数据的贪婪聚合与组合并两个阶段完成聚类,具有近线性时间复杂度,性能媲美最先进算法,并能生成直观解释。
2024-02-15 cs.DS cs.LG stat.CO
Bidirectional Conditional Insertion Sort algorithm; An efficient progress on the classical insertion sort
本文提出了一种新的基于插入排序概念的高效排序算法。该算法被称为双向条件插入排序(BCIS)。它是原地排序算法,与经典的插入排序(IS)相比,它具有显著的有效的平均情况下的时间复杂度。通过比较我们提出的新算法与快速排序算法,BCIS表示更快的平均情况下,相对较小的大小数组高达1500个元素。此外,BCIS被观察到比Quicksort更快,即使对于大尺寸的数组,在高重复元素率。
2016-08-12 cs.DS
Defeating duplicates: A re-design of the LearnedSort algorithm
LearnedSort是一种新的排序算法,与传统方法不同,它使用快速ML模型来提高排序速度。模型学习估计输入的分布,并通过预测其经验累积分布函数(eCDF)值来按排序顺序排列键。与最先进的排序算法相比,LearnedSort在几个数据集上表现出了出色的性能,无论是合成的还是真实的。然而,考虑到eCDF模型的性质,当输入数据包含大量重复密钥(即,重复)。这项工作深入分析了这种情况,并介绍了LearnedSort 2.0:算法的重新设计,解决了这个问题,使算法保持领先优势,即使是高重复输入。我们对大量不同数据集的广泛基准测试表明,新设计的排序率比原始版本高得多:高重复数据集平均提高4.78倍,低重复数据集平均提高1.60倍,同时在排序算法中处于领先地位。
2021-07-05 cs.DS
Comparison of Bucket Sort and RADIX Sort
桶排序和RADIX排序是两个著名的整数排序算法。本文以经验的方法测量了不同类型的输入序列的时间消耗和内存消耗。这些算法既从理论的角度进行了比较,也从使用随机数字序列的六种不同用例中进行了比较。这些测量提供了关于它们在不同现实生活情况下的表现的数据。我们发现桶排序比RADIX排序更快,但是桶排序在大多数情况下使用更多的内存。排序算法对较小的整数执行得更快。对于已经排序的输入,RADIX排序并不快,但是桶排序快。
2012-06-15 cs.DS
Sorting Finite Automata via Partition Refinement
本文针对有限自动机排序问题,通过扩展经典关系最粗划分精化算法,提出了$O(m\log n)$时间复杂度的WNFA共字典全预序与DFA最小宽度共字典偏序计算方法,效率显著优于现有算法且实用表现优异。
2023-12-18 cs.DS
Simple and Fast BlockQuicksort using Lomuto's Partitioning Scheme
本文介绍了Edelkamp和Weiss(ESA 2016)描述的BlockQuicksort算法的简单变体。简化是通过使用Lomuto的分区方案,而不是Hoare的交叉指针技术来划分输入。为了实现一个强大的排序算法,以及在许多不同的输入类型,本文介绍了一种新的两个枢轴Lomuto的分区方案的变体。一个令人惊讶的简单扭曲的通用两个枢轴快速排序方法使算法强大。本文提供了一个分析所提出的算法的理论特性,并将它们与竞争对手进行比较。分析表明,基于Lomuto的方法比基于Hoare的BlockQuicksort方法产生更高的平均排序成本。此外,分析是特别有用的理由约枢纽选择,适合双枢纽的方法。一项广泛的实验研究表明,尽管它们的理论行为较差,但更简单的变体的性能与原始版本的BlockQuicksort一样好。
2018-10-29 cs.DS
On Instance-Optimal Algorithms for a Generalization of Nuts and Bolts and Generalized Sorting
本文推广螺母螺栓问题提出二分排序,采用基于邻域的实例最优定义,给出接近最优的随机算法,并进一步推广到DAG排序,推翻了带代价信息排序的一个潜在下界。
2024-07-15 cs.DS
Simpler Optimal Sorting from a Directed Acyclic Graph
Technical University of Denmark, DTU(丹麦技术大学)
本文提出了一种基于有向无环图的简单最优排序算法,通过结合拓扑排序与堆排序,以更简洁的方式实现线性扩展数的最优查询和运行时间。
2026-02-07 cs.DS
An Efficient Multiway Mergesort for GPU Architectures
排序是一个基本的操作,是无数算法的构建块。因此,设计在一系列硬件架构上接近峰值性能的排序算法非常重要。图形处理单元(GPU)是特别有吸引力的架构,因为它们提供了巨大的并行性和计算能力。然而,其计算和存储层次结构的复杂性使得设计GPU高效算法具有挑战性。在这项工作中,我们提出了GPU多路合并排序(MMS),一个新的GPU高效的多路合并排序算法。MMS采用了一种新的分区技术,可以暴露现代GPU架构所需的并行性。据我们所知,MMS是GPU的第一个排序算法,它在全局内存访问方面是渐进最优的,并且完全没有共享存储体冲突。我们实现了MMS的初始实现,评估其性能的三个现代GPU架构,并比较它的竞争力的实现,可在国家的最先进的GPU库。尽管这些实现被高度优化,MMS比较有利,实现大多数随机输入的性能改进。此外,与MMS不同,最先进的算法容易受到银行冲突的影响。我们发现,对于某些输入,导致这些算法产生大量的银行冲突,MMS可以实现高达37.6%的加速比其最快的竞争对手。总的来说,尽管MMS当前的实现没有完全优化,但由于它有效地使用了存储层次结构,MMS的性能优于迄今为止最快的基于比较的排序实现。
2017-03-30 cs.DS
Efficient Construction of Neighborhood Graphs by the Multiple Sorting Method
National Institute of Informatics(情报研究综合学院);Tokyo Institute of Technology(东京工业大学)
邻域图作为机器学习中一种简洁的数据表示方法越来越受欢迎。然而,通过成对距离计算的朴素图构造对于$n$数据点花费$O(n^2)$运行时间,并且这对于数百万个数据点是非常慢的。对于等长的字符串,多重排序方法(Uno,2008)可以在$O(n+m)$时间内构建$ε$ -邻居图,其中$m$是数据中$ε$ -邻居对的数量。为了将这种非常有效的算法引入到图像、信号和文本等连续域,我们采用了随机投影方法将向量转换为字符串。理论结果阐明近似质量和计算时间之间的权衡。实证结果表明,我们的方法相比,快速最近邻替代品的效率。
2009-04-21 cs.DS cs.LG
Huskysort
关于排序问题的大量文献都集中在最小化比较和/或交换/副本的数量上。然而,衡量排序算法性能的一个更合适的标准是基于所需的数组访问的总数(“工作”)。对于一个基于分而治之的排序(包括该主题的迭代变体),我们可以将工作分为线性的(即$\textbf{O}(N)$)工作和线性的(即$\textbf{O}(N log N)$)工作。将工作从线性阶段移动到线性阶段的算法可能能够减少阵列访问的总数,并且间接地减少处理时间。本文介绍了一种排序方法,它通过替代廉价的比较,尽可能地减少了昂贵的比较在线性阶段的数量。在Java中,两种系统排序是双枢轴快速排序(用于原语)和对象的Timsort。我们证明,这两种算法的组合可以运行速度显着比单独的算法的类型的对象是昂贵的比较。我们称之为改进的排序算法Huskysort。
2020-12-01 cs.DS
Finding the saddlepoint faster than sorting
本文提出一种基于递归、可行性测试与松弛鞍点概念的算法,将 $n \times n$ 矩阵严格鞍点的查找时间从 $O(n \log n)$ 降至 $O(n \log^* n)$,逼近 $Ω(n)$ 下界,且能在同等时间内计算非严格鞍点。
2023-10-25 cs.DS math.CO
Space/time-efficient RDF stores based on circular suffix sorting
本文提出 RDFCSA,将 RDF 三元组视为循环字符串并借助压缩后缀数组进行自索引,以低空间开销高效支持三元组模式与 SPARQL 连接查询。
2022-04-13 cs.DS
Sparse Suffix and LCP Array: Simple, Direct, Small, and Fast
本文提出两种构造稀疏后缀数组与LCP数组的新算法,兼具简单、直接、紧凑和快速特性,最坏时间O(n log b),空间仅8b+o(b)机器字,并通过实验验证其简单性与高效性。
2024-07-04 cs.DS
zSort: Stable Distribution Sort using Z-Score Partitioning
Pandit Deendayal Energy University(潘迪特·迪恩达达尔能源大学)
本文提出zSort算法,通过Z分数分区实现稳定排序,避免传统方法在稳定与性能间的取舍,实测显示其在多种输入下均优于传统稳定排序算法,具有更高的效率和稳定性。
2026-05-14 cs.DS
Balanced offline allocation of weighted balls into bins
我们提出了一种基于排序的贪心算法SortedGreedy[m],用于近似求解离线版本的d-选择加权球入箱问题,其中每个球的选择数等于箱数。我们假设球的重量是非负的。我们比较了基于排序的算法与称为Greedy[m]的朴素算法的性能。我们表明,通过根据权重对输入数据进行排序,对于小问题(<= 4000个球),我们能够实现一个数量级的较小间隙(最重和最轻箱之间的权重差),对于较大的问题,至少两个数量级的较小间隙。在实践中,SortedGreedy[m]运行得几乎和Greedy[m]一样快。这使得基于排序的算法有利于解决离线加权球入箱问题。
2013-04-10 cs.DM cs.DS
Ordenação Baseada em Árvores de Fusão
排序是计算机科学中最重要的问题之一。经过60多年的研究,仍然有许多研究致力于开发更快的排序算法。本文的工作旨在解释融合树的数据结构。融合树负责第一个排序算法与时间$o(n \ lg n) $。- O problema da ordenação é sem dúvida um dos mais estudados na Ciência da Computação.没有escopo da computação moderna,depois de mais de 60 anos de estudos,ainda themes muitas pesquisas que objetivam or desenvolvimento de algoritmos que solucionem uma ordenação mais rápida or com menos recursos comparados a outros algoritmos já conhecidos。有很多关于秩序的算法,算法是快速的,也有经济上的,它们与西班牙的关系以及与西班牙的关系有关的算法。O objetivo deste trabalho é explicar a estrutura de dados Ávore de Fusão,responsável pelo primeiro algoritmo de orde…
2014-10-04 cs.DS
Leyenda: An Adaptive, Hybrid Sorting Algorithm for Large Scale Data with Limited Memory
排序是现代数据管理系统的基本任务之一。随着磁盘I/O成为最受指责的性能瓶颈和更多计算密集型工作负载,我们注意到,在异构环境中,性能瓶颈可能因基础设施而异。因此,排序内核需要适应不断变化的硬件条件。在本文中,我们提出了Leyenda,一个混合的,并行的和高效的基数最高有效位(MSB)合并排序算法,利用本地线程级CPU缓存和高效的磁盘/内存I/O。Leyenda能够根据不同的I/O和处理条件有效地进行内部或外部分拣。我们使用Sort Benchmark的三种不同工作负载对Leyenda进行了基准测试,针对三种独特的用例,包括内部,部分内存和外部排序,我们发现Leyenda的性能超过GNU的并行内存快速/合并排序实现多达三倍。Leyenda还在ACM 2019 SIGMOD编程竞赛中排名第二,总体排名第四。
2019-09-17 cs.DB cs.DC cs.DS
Searching and Sorting with O(n^2) processors in O(1) time
并行计算机系统中处理元件(PE)数量的激增,以及更广泛的算法并行化的使用,导致处理器间通信主导VLSI芯片空间。本文提出了一种新的架构,以克服这个问题,使用简单的交叉点开关配对PE,而不是一个复杂的互连网络。基于在\cite{oruc2016self}中描述的循环置换布线思想,这种配对导致$n(n-1)/2$处理元件的线性交叉点阵列和同样多的交叉点。我们证明了这种新的并行架构的多功能性,通过设计快速搜索和排序算法,特别是,我们发现,找到一个最小值,最大值,并搜索一个列表的$n$元素都可以在$O(1)$时间与$O(n)$扇入基本逻辑门,并在$O(\lg n)$时间与$O(1)$扇入。我们进一步表明,排序的$n$元素的列表也可以进行$O(1)$时间使用基本逻辑门与$O(n)$扇入和阈值逻辑门。如果仅使用具有$O(1)$扇入的基本逻辑门,则排序时间增加到$O(\lg n\lg\lg n)$。该算法能在$O(1)$时间内找到$n$元素间的最大值,在$O(\lg n (\lg\lg n))$时间内对$n$元素进行排序.此外,我们展示了其他基本查询可以处理相同的顺序内的时间复杂度。
2020-11-23 cs.DM cs.DS