Этот алгоритм предполагает выполнение m*n*l операций умножения и столько же операций сложения элементов исходных матриц. При умножении квадратных матриц размера n*n количество выполненных операций имеет порядок O(n^3).
Последовательный алгоритм умножения матриц представляется тремя вложенными циклами:
double MatrixA[Size][Size];
double MatrixB[Size][Size];
double MatrixC[Size][Size];
int i,j,k;
for (i=0; i < Size; i++)
{
for (j=0; j < Size; j++)
{
MatrixC[i][j] = 0;
for (k=0; k < Size; k++)
{
MatrixC[i][j] = MatrixC[i][j] + MatrixA[i][k] * MatrixB[k][j];
}
}
}
Этот алгоритм является итеративным и ориентирован на последовательное вычисление строк матрицы С. Действительно, при выполнении одной итерации внешнего цикла (цикла по переменной i) вычисляется одна строка результирующей матрицы.
Поскольку каждый элемент результирующей матрицы есть скалярное произведение строки и столбца исходных матриц, то для вычисления всех элементов матрицы С размером n*n необходимо выполнить (n^2)*(2n-1) скалярных операций и затратить время T1 = (n^2)*(2n-1)*t, где t есть время выполнения одной элементарной скалярной операции.