有没有办法在C++中对ENTIRE数组进行排序

Ada*_*893 0 c++ arrays sorting

作为遗传学习算法实验的一部分,能够将整个"基因"阵列分类为适应度顺序是有用的.到目前为止,我在社区中找到的唯一答案是处理最高值或第二高值等等.

有没有人开发出一种可以用C++实现的健壮的数组排序方法?似乎很多实现都涉及(int i:array)方法,这种方法并不是所有C++平台都普遍接受的.

如有任何帮助,我将不胜感激.

rsp*_*cer 9

为什么不std::sort按照定义使用<algorithm>?看到这里.您还可以定义自定义比较器.

样本用法如下

std::sort(someArray,someArray+lengthOfArray);
std::sort(someVector.begin(),someVector.end());
Run Code Online (Sandbox Code Playgroud)

stable_sort 如果你需要它也存在.

如果适应性不是直线<运算符(例如涉及某些模拟),则自定义比较器可能很有用.然后你可以做这样的事情

struct {
    bool operator()(gene a, gene b)
    {   
        // However you compare genes for fitness.  Not specific code,
        // just an example.
        a.simulateLife();
        b.simulateLife();
        return a.fitness < b.fitness;
    }   
} geneCompare;
std::sort(genes.begin(),genes.end(),geneCompare);
Run Code Online (Sandbox Code Playgroud)

此外,也许您不需要对整个数组进行排序.例如,如果100个基因中只有20个在时间步长中存活,那么您只需要前20个值.在这种情况下std::partial_sort是你的朋友.更多信息在这里.