我有两个结构:ARRAY2D(多维)和 ARRAY(一维)。我想从 ARRAY2D 类型中获取一列并将其复制到 ARRAY 类型中。
尽管我的代码在下面运行,并且我认识到这可能是一种从数组中获取列的糟糕方法,但我很好奇可能有哪些优化可以避免 O(n2) 算法。从 C 中的数组中获取列的有效方法是什么?
BOOL arr2_getColumn(ARRAY2D *arr, const int column_index, ARRAY *returnedArray)
{
int x, y;
int i = 0;
/* Check for valid array. */
if (arr->blnIsInit != TRUE)
return FALSE;
/* Initialize array with the column's height. */
if (!arr_init(returnedArray, arr->height))
return FALSE;
/* Copy over column. */
for (y = 0; y < arr->height; y++)
{
for (x = 0; x <= column_index; x++)
{
if (x == column_index)
{
returnedArray->array[i] = arr->array[y * arr->width + x];
i++;
}
}
}
/* Set the new size. */
returnedArray->size = arr->height;
return TRUE;
}
最佳答案
去掉 i
和 x
。
for (y = 0; y < arr->height; y++)
{
returnedArray->array[y] = arr->array[y * arr->width + column_index];
}
关于c - 从 C 中的多维数组中获取列的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23275985/