按特征值对特征向量进行排序(相关排序)

fbr*_*eto 4 c++ sorting eigenvalue eigenvector associated-sorting

我有一个未排序的特征值向量和一个相关的特征向量矩阵.我想根据排序的特征值集对矩阵的列进行排序.(例如,如果特征值[3]移动到特征值[2],我希望特征向量矩阵的第3列移到第2列.)

我知道我可以对O(N log N)via中的特征值进行排序std::sort.如果不滚动我自己的排序算法,我如何确保矩阵的列(相关的特征向量)跟随它们的特征值,因为后者是排序的?

Jer*_*fin 7

通常只需创建这样的结构:

struct eigen { 
    int value;
    double *vector;

    bool operator<(eigen const &other) const { 
        return value < other.value;
    }
};
Run Code Online (Sandbox Code Playgroud)

或者,只是把特征值/特征向量成std::pair-尽管我更喜欢eigen.valueeigen.vectorsomething.firstsomething.second.