草庐IT

Quicksort

全部标签

ruby - Ruby 语言中的快速排序

我正在尝试在ruby​​中实现快速排序,但卡在如何在pivot的第一个分区之后递归调用。请帮助我了解如何进行,并让我知道到目前为止我的编码风格是否良好。classQuickSort$array=Array.new()$count=0defadd(val)#addingvaluestosorti=0whileval!='000'.to_i$array[i]=val.to_ii=i+1val=gets.to_iendenddeffirstsort_aka_divide(val1,val2,val3)#firstpartition$count=$count+1@pivot=val1@left

javascript - 为什么 native 浏览器排序功能比快速排序慢?

我实现了快速排序,发现它比原生.sort()方法更快,hereisthePerformancetest为什么以及如何发生这种情况? 最佳答案 原因是尽管.sort()方法是原生的,但它比快速排序更通用。排序方法采用比较函数。而在快速排序的情况下,比较的种类已经有限。nativesort()方法速度较慢,以解决更多非常规比较函数。另请注意:您应该阅读underscore.js与lowdash的对比。Lowdash充满了使用for循环而不是原生函数来提高速度的方法。更新:我阅读了下面的评论并意识到我的错误。经过一番挖掘,我找到了nati

javascript - 输入的初始排序如何影响 Array.sort 性能?

输入的顺序是否可能影响Array.sort()的性能?如果是,怎么办? 最佳答案 这取决于几件事:运行时(不同的浏览器/运行时使用不同的排序算法)您输入的内容相对于所需顺序的排列方式是否使用自定义比较器(也与上一点有关)我正在处理的一个应用程序在一个模块中遇到了严重的性能下降,该模块正在对35K+字符串的列表进行排序,在它访问的API端点开始按排序顺序向其提供数据后。前端排序花费的时间从大约30毫秒减少到6秒(200x)。排序是使用自定义比较器完成的,该比较器优先考虑以特定后缀结尾的字符串。如果没有或两个字符串都以后缀结尾,则使用自

sorting - 如何按值对 map[int]int 进行排序?

这个问题在这里已经有了答案:HowcanIsortaMap[string]intbyitsvalues?(6个答案)关闭5年前。我的插入和快速排序不适用于map[uint64]uint64值。谁能帮忙?提前致谢。想要按值排序map“aint”。如有详细请追问。我会改进这个问题。再次感谢。packagemainimport("sort""fmt""time""runtime""math/rand")funcmain(){runtime.GOMAXPROCS(runtime.NumCPU())start:=time.Now()//themapvariableaint:=map[uint64

转到 : channel is necessary in this case?

http://play.golang.org/p/Xn3Qw7xAi3很难理解channel。我有funcmain(){in:=make(chanint)out:=make(chanint)goQuickSort(in,out)fori:=0;i这使得名为in、out和goroutine的两个channel成为函数Quicksort。1.QuickSort如何将in和out作为参数?它是否从下面的线路接收?in2。这种情况下使用channel是最佳的吗?动态地接收值看起来非常整洁……如果没有channel进行排序会有什么不同?这种情况更快? 最佳答案

recursion - 通过 WaitGroup 编排递归快速排序调用

我正在尝试并行运行递归快速排序调用:funcquicksort(a[]int){quicksortRecursive(a)wg.Wait()insertionsort(a)}funcquicksortRecursive(a[]int){iflen(a)>THRESHOLD{l,r:=partition(a)wg.Add(2)gofunc(){quicksortRecursive(a[:r+1])wg.Done()}()gofunc(){goquicksortRecursive(a[l:])wg.Done()}()}}go调用对我来说显得过于笨重。以下更具可读性的版本是否仍然正确?fun

c# - 学习 LINQ : QuickSort

我今天下午冒险开始研究LINQ,到目前为止只是在集合上研究LINQ。我尝试的第一件事就是实现QSort。现在--忽略我可以只使用ORDERBY并且这是一个非常愚蠢的qsort实现的事实--我想到的是:publicclasslqsort{publicstaticListQSLinq(List_items){if(_items.Count_less=(from_itemin_itemswhere_item_same=(from_itemin_itemswhere_item==_pivotselect_item).ToList();List_greater=(from_itemin_item

c# - 如果在单独的方法中调用,为什么 Parallel.Invoke 会快得多?

我执行了3次QuickSort-Algorithm并测量了对5000万个随机数进行排序的时间:顺序(大约需要14秒)使用Parallel.Invoke()作为排序算法的相同方法(耗时约12秒)使用Parallel.Invoke()在单独的方法中(耗时约7秒)所以我的问题是:如果在单独的方法中调用,为什么Parallel.Invoke()会快得多?在我的电脑上,示例3.的速度是示例2的两倍多。2。使用Parallel.Invoke()作为排序算法的相同方法publicclassParallelQuickSort{privateconstintThreshold=100;publicsta

c# - C#中内联方法的成本

我最近在C#中实现了QuickSort算法。对包含数百万项的整数数组进行排序,代码的性能比.NET的实现落后大约10%。privatestaticvoidQS(int[]arr,intleft,intright){if(left>=right)return;varpIndex=Partition(arr,left,right);QS(arr,left,pIndex);QS(arr,pIndex+1,right);}在包含500万个项目的数组中,此代码比.NET慢约60毫秒。随后,我创建了另一个具有Partition()的方法。内联到QS()中的方法(消除方法调用和return语句)。然

javascript - 按层次结构和名称对具有层次结构的对象数组进行排序

我有一个嵌套对象数组:[{_id:1,parent:0,name:'Z'},{_id:4,parent:0,name:'A'},{_id:2,parent:1,name:'H'},{_id:8,parent:2,name:'G'},{_id:5,parent:4,name:'M'},{_id:6,parent:4,name:'N'},{_id:3,parent:1,name:'Z'},{_id:7,parent:2,name:'L'}]我需要对它们进行排序,因为同一级别的节点将按字母顺序排序(asc/desc可配置),并且所有子节点都应在其父节点之后且在其父节点的兄弟节点之前也按字母顺