c++ - 检查 vector 是否已排序的最佳算法

标签 c++ algorithm optimization vector

检查 std::vector 的最佳方法是什么?排序?有没有比循环检查 v[i]<=v[i+1] 更快的方法? ?迭代器是否更快/更清洁?还是直接调用sort 更好?每次(尽管“v 已经排序”的情况很常见)?

我们可以安全地假设 vector 只包含 POD,通常是 float s 有时 doubleint秒。

vector 的大小是不平凡的(通常是几千个项目)但不是极端的(不是千兆字节大小)。

  • 在某些情况下,我们会立即对 vector 进行排序,但在其他情况下我们不会(这是我们算法的错误情况)。
  • 我们已尽可能使用“IsSorted”标志。

最佳答案

Is there something faster than a loop checking that v[i]<=v[i+1] ?

没有。

如果这是您希望经常检查的内容,您可能希望创建一个包装类,该类保留一个以 False 开头的“排序”标志,每当添加项目时将其设置为 False,并添加一个成员函数 sort( ) 在排序后将标志设置为 True。

关于c++ - 检查 vector 是否已排序的最佳算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/262000/

相关文章:

c++ - 是不是 vector.at(vector.size()-1) 比 vector.back() 更好,以防它是空的?

c++ - 计算直线上点的投影的优化函数?

java - 如何模拟快餐店的顾客

python - 衡量 python 脚本复杂性的问题

java - 内存似乎没有按预期工作

algorithm - 使用 Scala 的动态编程来解决来自 CodeChef 的 Mixture

C++ unordered_multimap 插入散列

c++ - 在 hackerearth 中获取 TLE

MySQL不会使用索引进行查询?

sql-server - 无条件 Count(*) 与系统表