因此,对于作业,我负责的任务之一是交换2行或2列彼此,并使用构建在类类型对象中的矩阵,使用这3个参数来定义它:在O(1)复杂度的矩阵中切换行和列
size_t _R;// Number of rows.
size_t _C;// Number of columns.
std::vector<T> mat;// array of T type variables to represent the matrix.
例如,如果我有3行3列,并且int向量数组为1,2,3,4,5,6,7,8,9,交换行0和1会使它看起来像4,5,6,1,2,3,7,8,9。
所以使交换发生不是问题在这里,我不明白,虽然是你打算如何使O(1)复杂性发生?
我想要做的是在行/列中的每个类型之间单独切换,但是那样会是O(n),对不对?因为它取决于每行/列中的项目数量。
编辑: 什么我尝试示例代码:
void swap_rows(const size_t& r1, const size_t& r2) {
for (size_t i = 0; i < _C; i++)
{
T temp = mat[i + (r1 * _C)];
mat[i + (r1 * _C)] = mat[i + (r2 * _C)];
mat[i + (r2 * _C)] = temp;
}
}
但我相信这是O(n)的复杂性,因此,一个不走的:P做到这一点
请告诉我们你已经试过 – 2015-02-09 13:36:23
要花几分钟,因为我只是在理论上考虑到目前为止(没有意见,如果它不是答案,对吧?:p) – MrGuy 2015-02-09 13:43:52
给定作为一个普通矢量的表示,我不相信这是可能的。 – molbdnilo 2015-02-09 13:45:15