-
4.3.1 对数的概念——小学生ppt学习课件
2020-11-23 17:03:154.3.1 对数的概念——小学生ppt学习课件 -
对数概念复习
2019-10-07 21:34:29对数的定义 如果 ,即a的x次方等于N(a>0,且a≠1),那么数x叫做以a为底N的对数(logarithm),记作 。其中,a叫做对数的底数,N叫做真数,x叫做“以a为底N的对数”。 特别地,我们称以10为底的对数... -
对数器的概念和使用
2018-02-24 17:34:49对数器的概念和使用 0)有一个你想要测的方法a, 1)实现一个绝对正确但是复杂度不好的方法b, 2)实现一个随机样本产生器 3)实现比对的方法 4)把方法a和方法b比对很多次来验证方法a是否正确。 5)如果有一...对数器在无法进行数据校验的情况下起着极为重要的作用,尤其是数据量大的时候。这里使用简单的冒泡排序进行演示
/** 冒泡排序 并使用对数器进行校验 对数器的概念和使用 0)有一个你想要测的方法a, 1)实现一个绝对正确但是复杂度不好的方法b, 2)实现一个随机样本产生器 3)实现比对的方法 4)把方法a和方法b比对很多次来验证方法a是否正确。 5)如果有一个样本使得比对出错,打印样本分析是哪个方法出错 6)当样本数量很多时比对测试依然正确,可以确定方法a已经正确。 */ import java.util.Arrays; public class C01_BubbleSort { public static void bubbleSort(int arr[]){ if(arr==null || arr.length<2){ return ; } //冒泡排序,第一个和第二个比较、交换,第二个和第三个比较、交换。。。得到最值在最后一个 //然后同样的做法得到第二个最值。。。 //时间复杂度O(N^2),额外空间复杂度O(1) for (int i = arr.length-1; i > 0; i--) { for (int j = 0; j < i; j++) { if(arr[j]>arr[j+1]){ swap(arr, j, j+1); } } } } ///对数器及其他方法// //一个一定对的排序方法(比如系统的或者简单的容易实现的) public static void systemSort(int arr[]){ Arrays.sort(arr); } //位运算交换数组的两个数 public static void swap(int[] arr,int i,int j){ arr[i] = arr[i]^arr[j]; arr[j] = arr[i]^arr[j]; arr[i] = arr[i]^arr[j]; } //打印数组 public static void printArr(int[] arr){ for (int i : arr) { System.out.print(i+" "); } System.out.println(); } //产生测试数据 public static int[] testData(int len,int val){ int arr[] = new int[len]; for (int i = 0; i < arr.length; i++) { arr[i] = (int) ((val+1)*Math.random()-(val+1)*Math.random()); } return arr; } //判断两个数组是否相等 public static boolean isEqual(int arr1[] ,int arr2[]){ if(arr1==null||arr2==null || arr1.length==0||arr2.length==0 || arr1.length!=arr2.length){ return false; } for (int i = 0; i < arr2.length; i++) { if(arr1[i]!=arr2[i]){ return false; } } return true; } public static void main(String[] args) { int len = 10;//测试数组长度 int val = 100;//测试数据范围 int times = 500000;//测试数据量 boolean isOK = true; for (int i = 0; i < times; i++) { int arr[] = testData(len, val); int arr1[] = Arrays.copyOf(arr, len); int arr2[] = Arrays.copyOf(arr, len); bubbleSort(arr1); systemSort(arr2); if( ! isEqual(arr1, arr2)){ printArr(arr1); printArr(arr2); isOK = false; break; } } System.out.println(isOK); } }
-
对数器的概念与使用
2020-07-28 11:11:21对数器的使用 文章目录对数器的使用1、介绍2、使用方法2.1 创建一个绝对正确的方法2.2 生成一个随机数组2.3 copy数组2.4 判断两数组是否相同2.5 大样本测试3、对插入排序进行测试3.1插入排序3.2测试结果 1、介绍 ...对数器的概念和使用
文章目录
1、介绍
- 在写出一个算法程序的时候,我们往往无法通过手动输入各种各样的测试数据来验证,在OJ平台上也无法找到对应的题目来进行验证。
- 在一些样本量很大的情况下,我们往往无法考虑到所有的边界情况。
- 尤其是一些贪心算法是很难通过数学的方式来进行验证的,这时使用对数器来判断算法程序是否正确
2、使用方法
2.1 创建一个绝对正确的方法
public static void comparator(int[] arr) { Arrays.sort(arr); }
2.2 生成一个随机数组
maxSize为数组的大小,maxValue为数组的元素的大小的范围
public static int[] generateRandomArray(int maxSize, int maxValue) { int[] arr = new int[(int) ((maxSize + 1) * Math.random())]; for (int i = 0; i < arr.length; i++) { arr[i] = (int) ((maxValue + 1) * Math.random()) - (int) (maxValue * Math.random()); } return arr; }
2.3 copy数组
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; }
2.4 判断两数组是否相同
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; }
2.5 大样本测试
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); insertionSort(arr1); comparator(arr2); if (!isEqual(arr1, arr2)) { succeed = false; } } System.out.println(succeed ? "Nice!" : "Fucking fucked!"); }
3、对插入排序进行测试
3.1插入排序
public static void insertionSort(int[] arr) { if(arr.length < 2 || arr == null) { return; } for(int i = 1; i < arr.length; i++) { for(int j = i-1; j>=0 && arr[j+1]<arr[j];j--) { swap(arr, j+1, j); } } }
3.2测试结果
- 正确显示NICE
- 错误显示fuck
-
对数器的概念及使用
2018-10-13 12:26:52对数器的概念及使用 1.有一个你要测的方法a; 2.实现一个绝对正确即使复杂度不好的方法b; 3.实现一个随机样本产生器; 4.实现比对的方法; 5.把方法a和方法b比对很多次来验证方法a是否正确 6.如果有一个...对数器的概念及使用
1.有一个你要测的方法a;
2.实现一个绝对正确即使复杂度不好的方法b;
3.实现一个随机样本产生器;
4.实现比对的方法;
5.把方法a和方法b比对很多次来验证方法a是否正确
6.如果有一个样本使得比对出错,打印样本分析是哪个方法出错
7.当样本数量很多时比对测试依然正确,可以确定方法a已经正确用冒泡排序作为例子:
package basic_class_01; import java.util.Arrays; import java.util.Random; public class bubbleSortWithComparator { // 冒泡排序部分 public static void bubbleSort(int[] arr){ if(arr==null||arr.length<2){ return; } for(int i=arr.length-1;i>0;i--){ for(int j=0;j<i;j++){ if(arr[j]>arr[j+1]){ swap(arr,j,j+1); } } } } public static void swap(int arr[],int i,int j){ int tmp=arr[i]; arr[i]=arr[j]; arr[j]=tmp; } // 产生随机数组 public static int[] generateRandomArray(int maxSize,int maxValue){ // 产生的数组长度为【0-size】 int[] arr=new int[(int)((maxSize+1)* Math.random())]; for(int i=0;i<arr.length;i++){ // 产生的数组中的数的范围是【-value-value】 arr[i]=(int)((maxValue+1)*Math.random())-(int)(maxValue*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 void comparator(int[] arr){ Arrays.sort(arr); } // 判断两个数组是否相等 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) { if (arr == null) { return; } for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); } public static void main(String[] args) { // text time是判断次数 int textTime=50000; int maxSize=100; int maxValue=100; boolean succeed=true; for(int i=0;i<textTime;i++){ int[] arr1=generateRandomArray(maxSize,maxValue); int[] arr2=copyArray(arr1); bubbleSort(arr1); comparator(arr2); if(!isEqual(arr1,arr2)){ succeed=false; break; } } // 如果succeed是true那么就会输出nice System.out.println(succeed ? "Nice!" : "Fucking fucked!"); int[] arr = generateRandomArray(maxSize, maxValue); printArray(arr); bubbleSort(arr); printArray(arr); } }
输出实例: -
透彻理解“对数”概念及其在量化交易中的意义
2019-03-18 16:35:03对数的发展史 对数之前是等差、等比数列。 15世纪,法国数学家N.Chuquet(1445-1488)在其《算学三部》中给出双数列的对应关系。 1 2 4 8 16 32 64 128 ... # 数列一:等比数列 0 1 2 3 4 5 6 ... -
对数函数定义域和值域_对数与对数函数之间不得不说的秘密
2021-01-07 04:23:51考纲原文(1)理解对数的概念及其运算性质,知道用换底公式将一般对数转化成自然对数或常用对数;了解对数在简化运算中的作用.(2)理解对数函数的概念,理解对数函数的单调性,掌握对数函数图象通过的特殊点.(3)知道... -
论文研究-结合对数似然比的领域本体概念和关系的提取.pdf
2019-09-12 09:03:40针对现有学习方法准确率不高,提出一种结合对数似然比(Log-Likelihood Ratio,LLR)的本体学习方法,采用对数似然比计算概念与领域及概念与概念之间的相关性,将其应用到概念与关系提取中。实验结果表明,结合对数... -
对数的性质和基本运算
2020-09-05 14:07:28对数的概念:一般地,如果那么数X叫做以a为底N的对数。记做:,其中a叫做对数的底数,N叫做真数。需要注意的是底数a的限制条件:。 对数的形式 (1)、常用对数:以10为底的对数记做: (2)、自然对数:以无理... -
数学对数和编程对数
2019-08-27 14:27:111.对数的概念就是求指数的过程,打个比方: 如果a的x次方等于N,那么对数的表示方法就是:x = ,a是底数,N是真数,x为指数 2.以a为底N的对数记作。对数符号log出自拉丁文logarithm,最早由意大利数学家卡瓦列里... -
对数函数定义域和值域_高考考纲与考向分析——对数与对数函数
2020-12-24 22:43:36考纲原文(1)理解对数的概念及其运算性质,知道用换底公式将一般对数转化成自然对数或常用对数;了解对数在简化运算中的作用.(2)理解对数函数的概念,理解对数函数的单调性,掌握对数函数图象通过的特殊点.(3)... -
对数函数定义域和值域为r_高考考纲与考向解读——对数与对数函数
2021-01-09 16:36:21考纲原文(1)理解对数的概念及其运算性质,知道用换底公式将一般对数转化成自然对数或常用对数;了解对数在简化运算中的作用.(2)理解对数函数的概念,理解对数函数的单调性,掌握对数函数图象通过的特殊点.(3)知道... -
【编程总结】对数器的概念和使用(java实现)
2019-08-05 21:46:17【编程总结】对数器的概念和使用(java实现) 步骤 ①:有一个你想要测的方法a。 ②:实现一个绝对正确但是时间复杂度不好的方法b。 ③:实现一个随机样本产生器。 ④:实现比对的方法。 ⑤:把方法a和方法b比对很多... -
高一数学对数的知识点归纳_精选.doc
2020-12-08 13:26:02高一数学对数的知识点归纳 一、对数的概念 (1)对数的定义: 如果ax=N(a0且a≠1),那么数x叫做以a为底N的对数,记作x=logaN,其中a叫做对数的底数,N叫做真数.当a=10时叫常用对数.记作x=lg_N,当a=e时叫自然对数,... -
1.3对数器与递归相关概念
2020-04-09 12:04:56对数器的概念和使用(理解) 0,有一个你想要测的方法a, 1,实现一个绝对正确但是复杂度不好的方法b, 2,实现一个随机样本产生器 3,实现比对的方法 4,把方法a和方法b比对很多次来验证方法a是否正确。 5,如果有一... -
高中数学基础-2.2.1 对数及对数运算(上)
2020-04-11 18:54:341、对数的概念 2、指数式与对数式名称的变化 3、两种特殊的对数 4、对数的常用结论 问题引入: 1、一尺之锤,日取其半,万世不竭 (1)、取5次,还有多长? (2)、可设取x次,则有 抽象出:(1/2)^x =0.... -
左神算法学习笔记基础篇(1):对数器的概念和使用
2019-09-10 22:42:37对数器的概念和使用 一、使用范围 二、步骤 对数器代码 一、产生随机样本(随机长度数组)(maxSize是数组的最大长度,maxValue是数组中的最大值) 二、准备一个绝对正确的方法b来测试方法a(比如bubbleSort) ... -
对数器的使用
2019-04-08 14:18:55对数器的概念和使用 对数器就是一个绝对正确的方法(没有时间和空间复杂度的限制的)和能产生大量随机样例的随机器的组合。 对数器的作用:验证算法是否正确。 使用场景:在笔试中,当我们写出的算法逻辑上大致... -
同底数幂比较大小方法_数学一轮复习10,对数与对数函数,基本方法是“同底法”...
2021-01-07 04:23:59理解对数的概念和运算性质,知道用换底公式能将一般对数转化成自然对数或常用对数;2.通过具体实例,了解对数函数的概念.能用描点法或借助计算工具画出具体对数函数的图象,探索并了解对数函数的单调性与特殊点;... -
多个对数的椭圆推广
2020-04-10 03:46:13基于多个对数的众所周知的属性,我们将权重的概念与这些函数相关联,并表明可以通过适当的微分算子的作用来降低该权重。 然后,我们说明如何从较低的权重开始,自下而上地研究这些函数之间的属性和关系。 -
对数函数定义域和值域_高一数学必修1:第二章《基本初等函数》第二课对数函数知识点...
2021-01-09 16:03:40北京高中生学习小编整理...对数的概念:一般地,如果 ,那么数 叫做以 为底 的对数,记作: ( — 底数, — 真数, — 对数式)说明:1 注意底数的限制 ,且 ;2 ;3 注意对数的书写格式.两个重要对数:1 常用对数... -
复数的对数
2011-05-11 17:22:00复数的对数前面推导过一般公式,现在加强一般性的概念,比如In (-1),因为-1是复数,所以In (-1)是有解的,打破了以前In (x) 其中x必须为正数的思维。其中解的个数还是无穷的。 -
对数器
2020-04-20 15:51:21对数器对数器的概念对数器的实现 对数器的概念 对数器主要用于在没有OJ或OJ不提示出错的测试用例时测试自己写的方法是否正确并找出出错的测试用例。 0、 有一个你想要测的方法a 1、 实现一个绝对正确但是复杂度不好... -
指数对数的实际应用
2020-12-14 12:38:51在算法中计算时间复杂度和空间复杂度时经常会出现对数、指数表达式,需要复习一下这些概念。 对数源于指数,是指数函数反函数 因为:y = 所以:x = 通俗理解就是:多少个a相乘可以得到y,答案是: 实际用法... -
给定有序表A[1:n] 修改合并排序算法,求出该有序表的逆序对数
2020-11-25 21:30:07有关逆序对数的概念: 定义:对于一个给定的数列,如果有i<j,且Ai>Aj,则称(i,j)为一逆序对. 要解决的问题是,给出一个数列,求出这个数列包含多少个逆序对。 例如,数组(3,1,4,5,2)的“逆序对”有<3,1&... -
自然对数
2017-02-17 11:28:25以常数e为底数的对数叫做自然对数,记作lnN(N>0)。...1数学表示方法2概念▪有关概念▪对数函数▪e的级数展开式3对数的生物学意义 4历史5自然律▪螺线▪自然律之美▪渊源及发展6复数的对数 7e与π的哲学意义
收藏数
1,507
精华内容
602
-
2021 年该学的 CSS 框架 Tailwind CSS 实战视频
-
java sql merge_sql merge用法
-
java排序算法面试_面试中常用排序算法实现(Java)
-
java sql package_Codename One build error: package java.sql does not exist
-
网站:“学习足够的Git来进行危险のサンプルWebサイト”-源码
-
ansible-role-fd:用于维护文件和目录的Ansible角色-源码
-
java面试准备什么_Java面试题准备
-
java springmvc注解详解_springMVC 注解版(基础)
-
2021-02-28
-
SPFD5420A 2.6 inch HANNSTAR Application Note.pdf
-
java sql package_java.sql
-
libFuzzer视频教程
-
sungpyocho.github.io-源码
-
项目经理成长之路
-
java spring定时器_Spring定时器的两种实现方式
-
Sanmateo-draft-lifeform-源码
-
my-library:用Angular Framework编写的我的文学作品集-源码
-
MaxScale 实现 MySQL 读写分离与负载均衡
-
PPT大神之路高清教程
-
MySQL 备份与恢复详解(高低版本 迁移;不同字符集 相互转换;表