作为遗传学习算法实验的一部分,能够将整个“基因”排序为适合顺序是很有用的。到目前为止,我能在社区中找到的唯一答案是处理最高或第二高的值等等。有没有一种方法可以对C++中的整数数组进行排序
有没有人开发出一个强大的数组排序方法,可以在C++中实现?看起来很多实现都涉及(int i:array)方法,它并不是所有C++平台都普遍接受的。
我将不胜感激任何帮助。
作为遗传学习算法实验的一部分,能够将整个“基因”排序为适合顺序是很有用的。到目前为止,我能在社区中找到的唯一答案是处理最高或第二高的值等等。有没有一种方法可以对C++中的整数数组进行排序
有没有人开发出一个强大的数组排序方法,可以在C++中实现?看起来很多实现都涉及(int i:array)方法,它并不是所有C++平台都普遍接受的。
我将不胜感激任何帮助。
为什么不使用<algorithm>
中定义的std::sort
?见here。您也可以定义一个自定义比较器。
样品用法如下
std::sort(someArray,someArray+lengthOfArray);
std::sort(someVector.begin(),someVector.end());
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);
另外,也许你不需要整个数组进行排序。例如,如果只有20个基因中的20个在时间步中存活,则只需要前20个值。在这种情况下std::partial_sort
是你的朋友。更多信息here。
不知道你从结果得到了什么,但一般重新排列排序在增加/减少为了 – P0W 2014-10-03 08:58:11
http://www.cplusplus.com/reference/cstdlib/qsort/ HTTP _all_的元素:// WWW .cplusplus.com/reference/algorithm/sort/ http://www.cplusplus.com/reference/algorithm/stable_sort/ ... 还有更多的在互联网上 – yakoudbz 2014-10-03 08:58:30
'std :: sort'也许? – 2014-10-03 08:58:50