如何添加一个+一个matric(数组数据结构),然后在C语言中找到第三个最小的数字(不是C ++)?谢谢您的代码。
答案 0 :(得分:0)
答案 1 :(得分:0)
如果您尝试访问SIMD指令,我不相信有一种方法可以同时执行这两项操作。如果您没有尝试使用SIMD,那么只需保留三个最小值(如优先级队列)的临时数组,每次在矩阵中计算总和时更新。
如果这是C ++,优先级队列可以保存在STL算法使用的仿函数对象中。
答案 2 :(得分:0)
示例代码如下:
void addMatrix(unsigned int size, double const * const a, double const * const b, double * const res) {
int i;
for (i = 0; i < size * size; ++i)
res[i] = a[i] + b[i];
}
double findThirdSmallest(unsigned int size, double const * const input) {
//save the three smallest values inside res
double res[3];
int i;
for (i = 0; i < 3; ++i) {
res[i] = LDBL_MAX;
}
for (i = 0; i < size * size; ++i) {
int j;
for (j = 0; j < 3; ++j) {
if (input[i] < res[j]) {
int k;
for (k = 2; k != j; --k) {
res[k] = res[k - 1];
}
res[j] = input[i];
break;
}
}
}
return res[2];
}
编辑:改变矩阵的类型和大小将是你的工作。