我使用Hoare的分区方法实现了一个Quicksort。它是来自C的一个简单端口,而C可以使用这种方法在几分之一秒内轻松地对数千个数字进行排序,我的Julia实现扼杀了50个数字。我用一小组15个数字尝试了它并且它正确排序所以也许我缺少一些优化。我排序的数字是随机生成的,不是有序的,所以它可以避免n ^ 2陷阱。
swap
答案 0 :(得分:3)
快速浏览一下,如果输入items
数组包含任何具有相同值的元素,代码中的某个地方似乎存在逻辑缺陷。我怀疑这可能是由于Julia中的数组从1
开始编制索引,而不是像C中的0
编制索引。也许可以查看。
如果您只想使用快速排序算法,Julia基础库中有一个可用:
a = [123,42,12,1,4]
sort!(a, alg=QuickSort)
找到它in the docs。
如果您需要避免名称空间冲突,可以使用sort!(a, alg=Base.Sort.QuickSort)
,因为您自己的函数恰好具有完全相同的名称。