我使用的是1索引数组,试图按利润/价格比率进行排序。我写出了一个比较函数,所有函数都起作用,但是它将第一个元素放在索引0中。我只是将这些元素移到了上面,但是数组很大,这会增加时间复杂度
有谁知道与这种类型的数组兼容的种类?就像在其中我可以指定数组的开始吗?
我尝试使用以下
qsort(problemCards+sizeof(Card), problemBank[i].getNumCards(), sizeof(Card), compare);
但是在对比较函数的调用之一上出现算术错误。
我实际上是在尝试避免为此编写自己的排序,因此,我们将不胜感激任何帮助,谢谢!
以下是如何调用std::sort
您的数据的方法:
bool card_less( const Card& lhs, const Char& rhs ) {
return compare(&lhs, &rhs)<0;
}
Card* start = problemCards+1;
Card* end = start + problemBank[i].getNumCards();
std::sort( start, end, card_less );
假定这compare
是一个需要两个时间的自由函数Card const*
。我们定义card_less
为另一个免费函数,用于compare
告诉您lhs是否小于rhs。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句