作爲遺傳學習算法實驗的一部分,能夠將整個「基因」排序爲適合順序是很有用的。到目前爲止,我能在社區中找到的唯一答案是處理最高或第二高的值等等。有沒有一種方法可以對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