我正在使用Codefights中的一个向量来处理“almostIncreasingSequence”挑战。有没有办法跟踪排序方法有多少“步骤”,所以我可以设置一个简单的计数器/标志来检查排序是否超过预定义的阈值?
答案 0 :(得分:6)
是的。您可以使用std::sort
的自定义比较功能,如下所示:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> myVector { 2, 8, 5, 9, 3, 7, 1, 4, 6, 0 };
int counter = 0;
std::sort(myVector.begin(), myVector.end(), [&counter](int lhs, int rhs) {
counter++;
return lhs < rhs;
});
std::cout << "Steps: " << counter << std::endl;
for(auto e : myVector)
std::cout << e << ' ';
std::cout << std::endl;
return 0;
}