gpt4 book ai didi

c - 从四个中找到两个最小值?

转载 作者:太空狗 更新时间:2023-10-29 14:50:26 24 4
gpt4 key购买 nike

所以,我有四个整数,我需要找出这四个整数中最小的两个。用 C(或任何其他语言)执行此操作的最有效方法是什么?

编辑:为了提高效率,我需要一个固定的实现,因为这是一个非常关键的操作,将要执行数千次。

最佳答案

这是一个使用 sorting networks 的高效实现:

inline void Sort2(int *p0, int *p1)
{
if (*p0 > *p1)
{
const int temp = *p0;
*p0 = *p1;
*p1 = temp;
}
}

inline void Sort4(int *p0, int *p1, int *p2, int *p3)
{
Sort2(p0, p1);
Sort2(p2, p3);
Sort2(p0, p2);
Sort2(p1, p3);
Sort2(p1, p2);
}

这只需要 5 次比较和最多 5 次交换。您可以忽略 p2、p3 的结果。

请注意,对于性能关键型应用程序,Sort2 可以在某些体系结构上的一个或两个指令中实现,而无需分支。

关于c - 从四个中找到两个最小值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12214765/

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