Ada*_*893 0 c++ arrays sorting
作为遗传学习算法实验的一部分,能够将整个"基因"阵列分类为适应度顺序是有用的.到目前为止,我在社区中找到的唯一答案是处理最高值或第二高值等等.
有没有人开发出一种可以用C++实现的健壮的数组排序方法?似乎很多实现都涉及(int i:array)方法,这种方法并不是所有C++平台都普遍接受的.
如有任何帮助,我将不胜感激.
为什么不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是你的朋友.更多信息在这里.