c++ 对数器实现

对数器是用于本地验证算法正确性的工具,尤其在没有在线评测系统时。本文以归并排序为例,介绍了如何创建对数器。通过生成随机数组,与标准库的sort函数对比结果,确保算法的正确性。示例代码展示了如何在大量测试实例中验证算法的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对数器的作用

对数器用于在自己的本地平台验证算法正确性,用于算法调试,无需online judge。

好处:

  1. 没找到线上测试的online judge,则可以使用对数器。
  2. 大数据样本出错时,快速找到出错地方。
  3. 贪心策略使用,直接验证是否正确

对数器的实现代码

  1. 首先需要有一个你想要测试的方法,本文利用归并排序算法举例。归并算法代码如下:
//有一个你想要测试的算法,这里以归并排序为例
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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值