因此,對於作業,我負責的任務之一是交換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