对数器
概述#
对数器是通过用大量测试数据来验证算法是否正确的一种方式。在算法笔试的时候,我们经常只能确定我们写出的算法在逻辑上是大致正确的,但是谁也不能一次性保证绝对的正确。特别是对于一些复杂的题目.
那么我们提供多个算法, 生成随机样本, 比较多个算法的结果是否一样, 假如结果不一样, 判断哪个算法是否有误
例子#
你要测试插入排序是否正确:
from typing import List from random import randint # 手写的插入排序算法 def insert_sort(lst: List[int]): lst_len = len(lst) if lst_len <= 1: return for i in range(1, lst_len): for j in range(i): if lst[j] > lst[i]: lst[j], lst[i] = lst[i], lst[j] def gen_lst(max_val: int, max_len: int) -> List[int]: """ 生成随机列表 :param max_val: 最大值 :param max_len: 最大长度 """ res = [] lst_len = randint(0, max_len) for i in range(lst_len): res.append(randint(0, max_val)) return res def verify(max_val: int, max_len: int, max_time: int): """ 检验算法是否正确 :param max_val: 最大值 :param max_len: 最大长度 :param max_time: 生成(比较)多少个数据 :return: """ for _ in range(max_time): lst = gen_lst(max_val, max_len) lst2 = lst.copy() # 1. 调用自己的算法 insert_sort(lst) # 2. 调用其他算法, 如语言提供的 lst2.sort() # 3. 比较, 不相等则报错 if lst != lst2: print(lst) print(lst2) raise Exception("lst != lst2") verify(20, 30, 10000)
作者:忞翛
出处:https://www.cnblogs.com/lczmx/p/15802156.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
欢迎各位大佬评论交流。可以的话,不妨点一下推荐。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端