首页 > 编程语言 > 详细

算法测试的工具

时间:2021-06-20 22:40:28      阅读:24      评论:0      收藏:0      [点我收藏+]

在线测试(对数器)

认识对数器

概述:产生大规模数据,与原生的排序算法比较,进行检测自己所写的算法是否正确
1,你想要测的方法a

2,实现复杂度不好但是容易实现的方法b

3,实现一个随机样本产生器

4,把方法a和方法b跑相同的随机样本,看看得到的结果是否一样

5,如果有一个随机样本使得比对结果不一致,打印样本进行人工干预,改对方法a和方法b

6,当样本数量很多时比对测试依然正确,可以确定方法a已经正确。

	
	public static void comparator(int[] arr) {
		Arrays.sort(arr);
	}
	
//		test
	//加工出一个长度随机,值也随机的数组
	public static int[] generateRandomArray(int maxSize,int maxValue) {
		
		//Math.random() [0,1)
		//Math.random() * N [0,N)
		//(int)(Math.random()*N) [0,N-1] 
		int[] arr = new int[(int)(Math.random()*(maxSize+1))];
		for(int i = 0 ; i < arr.length; i++) {
			//想做到负的到整的都有
			arr[i] = (int)((maxValue+1)*Math.random()) - (int)((maxValue+1)*Math.random());
		}
		return arr;
	}
	public static int[] copyArray(int[] arr) {
		if(arr == null) return null;
		int[] res = new int[arr.length];
		for(int i = 0;i < arr.length; i++) {
			res[i] = arr[i];
		}
		return res;
	}
	
	//比较两个数组是否一样
	public static boolean isEqual(int[] arr1,int[] arr2) {
		if((arr1 == null) && arr2 != null || (arr1 != null) && arr2 == null) return false;
		if(arr1 == null && arr2 == null) return true;
		if(arr1.length != arr2.length) return false;
		for(int i = 0; i< arr1.length ;i++) {
			if(arr1[i] != arr2[i]) {
				return false;
			}
		}
		return true;			
	}
	
	public static void printArray(int[] arr) {
		System.out.println(Arrays.toString(arr));
	}
	
	
	public static void main(String[] args) {
		int testTime = 500000;
		int maxSize = 100;
		int maxValue = 100;
		boolean succeed = true;
		for(int i = 0;i < testTime; i++) {
			int[] arr1 = generateRandomArray(maxSize,maxValue);
			int[] arr2 = copyArray(arr1);
			bubbleSort(arr1);
			comparator(arr2);
			if(!isEqual(arr1,arr2)) {
				succeed = false;
				printArray(arr1);
				printArray(arr1);
				break;
			}			
		}
		
		System.out.println(succeed ? "Nice":"Fucking fucked!");
		
		int[] arr = generateRandomArray(maxSize,maxValue);
		printArray(arr);
		bubbleSort(arr);
		printArray(arr);	
	}

算法测试的工具

原文:https://www.cnblogs.com/wpbk/p/14908019.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!