我有一个未排序的特征值 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.valueeigen.vector 而不是 something.firstsomething.second

关于c++ - 按特征值对特征向量进行排序(关联排序),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2686548/

10-15 06:28