Questions tagged «sorting-network»

24
最快的固定长度6 int数组
在回答另一个堆栈溢出问题(这个问题)时,我偶然发现了一个有趣的子问题。对6个整数数组进行排序的最快方法是什么? 由于问题非常低: 我们不能假设库可用(并且调用本身有成本),只能使用普通C语言 为了避免排空指令流水线(具有非常高的成本),我们也许应该尽量减少分支机构,跳跃,和所有其他类型的控制流断裂(像那些隐藏在背后的序列点&&或||)。 房间受到限制,尽量减少寄存器和内存使用是一个问题,理想情况下,最好在适当的位置进行排序。 确实,这个问题是一种高尔夫,其目标不是最小化源代码长度,而是执行时间。我将其称为“ Zening”代码,如Michael Abrash所著的《Zen of Code Optimization》及其续集的书名中所用。 至于为什么有趣,它分为几层: 该示例简单易懂,易于度量,不涉及太多C技能 它显示了针对该问题选择良好算法的效果,还显示了编译器和基础硬件的效果。 这是我的参考(天真,未优化)实现和测试集。 #include <stdio.h> static __inline__ int sort6(int * d){ char j, i, imin; int tmp; for (j = 0 ; j < 5 ; j++){ imin = j; for (i = j + 1; i < …

10
排序10个数字的最快方法?(数字为32位)
我正在解决一个问题,它涉及非常快速地排序10个数字(int32)。我的应用程序需要尽可能快地对10个数字进行数百万次排序。我正在采样数十亿个元素的数据集,每次需要从中选择10个数字(简化)并对它们进行排序(并从排序的10个元素列表中得出结论)。 目前,我正在使用插入排序,但我想我可以针对10个数字的特定问题实现一个非常快速的自定义排序算法,该算法将胜过插入排序。 有谁知道如何解决这个问题?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.