对数器的作用
对数器用于在自己的本地平台验证算法正确性,用于算法调试,无需online judge。
好处:
- 没找到线上测试的online judge,则可以使用对数器。
- 大数据样本出错时,快速找到出错地方。
- 贪心策略使用,直接验证是否正确
对数器的实现代码
- 首先需要有一个你想要测试的方法,本文利用归并排序算法举例。归并算法代码如下:
//有一个你想要测试的算法,这里以归并排序为例
class Solution {
public:
static int reversePairs(vector<int>& nums) {
auto L = 0;
auto R = nums.size() - 1;
auto res = 0;
mergesort(nums, L, R);
return res;
}
//归并排序,从大到小排列(逆序)
static void mergesort(vector<int>& nums, int L, int R)
{
//递归终止条件
if (L >= R)
{
return;
}
//序列中心位置计算
auto mid = (L + ((R - L) >> 1));
//auto mid = (R + L) / 2;
//左右序列分别排序
mergesort(nums, L, mid);
mergesort(nums, mid + 1, R);
//归并两个排好序的序列
merge(nums, L, mid, R);
}
static void merge(vector<int>& nums, int L, int mid, int R)
{
//临时向量存储归并的结果
vector<int> tmp(R - L + 1);
auto pos = 0;
auto Lp = L;
auto Rp = mid + 1;
while ((Lp <= mid) && (Rp <= R))
{
tmp[pos++] = (nums[Lp] < nums[Rp]) ? nums[Lp++] : nums[Rp++];
}
while (Lp <= mid)
{
tmp[pos++] = nums[Lp++];
}
while (Rp