gpt4 book ai didi

algorithm - 对非常小的列表进行排序的快速算法实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:13:53 24 4
gpt4 key购买 nike

这是我很久以前遇到的问题。我想我可以问问你的想法。假设我有非常小的数字(整数)列表,4 或 8 个元素,需要快速排序。什么是最好的方法/算法?

我的方法是使用最大/最小函数(10 个函数对 4 个数字进行排序,没有分支,iirc)。

// s(i,j) == max(i,j), min(i,j)
i,j = s(i,j)
k,l = s(k,l)
i,k = s(i,k) // i on top
j,l = s(j,l) // l on bottom
j,k = s(j,k)

我想我的问题更多地与实现有关,而不是算法类型。

此时它变得有点依赖于硬件,所以让我们假设 Intel 64 位处理器和 SSE3。

谢谢

最佳答案

对于像这样的小数组,您可能应该查看 sorting networks .正如您在该页面上看到的那样,插入排序可以表示为排序网络。但是,如果您事先知道数组的大小,则可以设计出最佳网络。看看this site这可以帮助您找到给定大小的数组的最佳排序网络(尽管我认为最佳只能保证最大为 16)。比较器甚至在可以并行完成的操作中组合在一起。比较器本质上与您的 s(x,y) 函数相同,但如果您真的希望它更快,则不应使用 min 和 max,因为这样您就需要进行两倍的比较。

如果您需要这种排序算法适用于各种大小,那么您可能应该像其他人建议的那样使用插入排序。

关于algorithm - 对非常小的列表进行排序的快速算法实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2748749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com