1 索引数组上的 qsort() 搞乱了索引
qsort() on a 1-indexed array is messing up indexing
我正在使用一个索引为 1 的数组,我试图按 profit/price 比率对其进行排序。我写了一个比较函数,一切正常,但它将第一个元素放在索引 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 的自由函数。
我正在使用一个索引为 1 的数组,我试图按 profit/price 比率对其进行排序。我写了一个比较函数,一切正常,但它将第一个元素放在索引 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 的自由函数。