对数器

概述#

对数器是通过用大量测试数据来验证算法是否正确的一种方式。在算法笔试的时候,我们经常只能确定我们写出的算法在逻辑上是大致正确的,但是谁也不能一次性保证绝对的正确。特别是对于一些复杂的题目.
那么我们提供多个算法, 生成随机样本, 比较多个算法的结果是否一样, 假如结果不一样, 判断哪个算法是否有误

例子#

你要测试插入排序是否正确:

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)
posted @   403·Forbidden  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示
主题色彩