矩阵中的第三个最小数字及其加法

时间:2010-05-16 16:19:05

标签: c

如何添加一个+一个matric(数组数据结构),然后在C语言中找到第三个最小的数字(不是C ++)?谢谢您的代码。

3 个答案:

答案 0 :(得分:0)

  • 首先决定如何表示矩阵(提示:使用数组数组)
  • 然后弄清楚如何添加两个矩阵 - 这很简单
  • 那么,如何找到序列中第3个最小的元素?有很多方法!效率对您来说尤其重要吗?需要什么算法复杂度?

答案 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];
}

编辑:改变矩阵的类型和大小将是你的工作。