这是我很久以前遇到的问题.我想我可能会问你的想法.假设我有一个非常小的数字列表(整数),4或8个元素,需要快速排序.什么是最好的方法/算法?
我的方法是使用max/min函数(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)
Run Code Online (Sandbox Code Playgroud)
我想我的问题更多地与实现有关,而不是算法的类型.
此时它变得有点依赖于硬件,所以让我们假设带有SSE3的Intel 64位处理器.
谢谢
有一种算法可以在 7 次比较中对 5 个项目进行排序:设计一种有效的算法,可以在少于 8 次比较中对 5 个不同的键进行排序如果需要对 5 个项目调用该算法,
是否会std::sort()使用该算法?这个算法可以扩展到7个项目吗?在 C/C++ 中对 7 个整数进行排序最快的算法是什么?