c++ - 1 索引数组上的 qsort() 搞乱了索引

标签 c++ arrays sorting quicksort

我正在使用一个索引为 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 的免费函数。

关于c++ - 1 索引数组上的 qsort() 搞乱了索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29244216/

相关文章:

c++ - 菜单驱动输入做循环

java - 我需要找到用户输入的特定变量,但我不明白如何

arrays - 如何查找从文件中读取的二维数组元素出现的次数?

algorithm - 不使用循环对字符串列表进行排序的伪代码

C# Windows 窗体 TreeView 在 LabelEdit 之后排序

c++ - 在 C++ 类之间共享实现

c++ - 如何使用 openGL 获得真正平滑的移动物体

c++ - gcc 4.3.3 编译器选项默认启用

java - 如何从另一个类的另一个数组方法获取数组方法

python - 识别具有最大键数的值