我有一个未排序的特征值 vector 和一个相关的特征向量矩阵。我想根据已排序的特征值集对矩阵的列进行排序。 (例如,如果特征值 [3] 移动到特征值 [2],我希望特征向量矩阵的第 3 列移动到第 2 列。)
我知道我可以通过 O(N log N)
对 std::sort
中的特征值进行排序。如果不滚动我自己的排序算法,我如何确保矩阵的列(相关的特征向量)随着它们的特征值被排序?
最佳答案
通常只需创建一个类似这样的结构:
struct eigen {
int value;
double *vector;
bool operator<(eigen const &other) const {
return value < other.value;
}
};
或者,只需将特征值/特征向量放入
std::pair
中——尽管我更喜欢 eigen.value
和 eigen.vector
而不是 something.first
和 something.second
。关于c++ - 按特征值对特征向量进行排序(关联排序),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2686548/