精华内容
下载资源
问答
  • 小编为大家整理了初中数学里我们所学的log函数的运算公式,大家快来跟小编学习一下吧。运算公式如果a>0,且a≠1,M>0,N>0,那么:1.loga(MN)=logaM+logaN;2.loga(M/N)=logaM-logaN;3.对logaM中M的n次方...

    小编为大家整理了初中数学里我们所学的log函数的运算公式,大家快来跟小编学习一下吧。

    运算公式

    如果a>0,且a≠1,M>0,N>0,那么:

    1.loga(MN)=logaM+logaN;

    2.loga(M/N)=logaM-logaN;

    3.对logaM中M的n次方有=nlogaM;

    如果a=e^m,则m为数a的自然对数,即lna=m,e=2.718281828…为自然对数的底。

    基本性质

    1.a^(log(a)(b))=b

    2.log(a)(a^b)=b

    3.log(a)(MN)=log(a)(M)+log(a)(N)

    4.log(a)(M÷N)=log(a)(M)-log(a)(N)

    5.log(a)(M^n)=nlog(a)(M)

    对数定义

    如果,a的x次方等于N(a>0,且a≠1),那么数x叫做以a为底N的对数。其中,a叫做对数的底数,N叫做真数,x叫做“以a为底N的对数”。我们称以10为底的对数叫做常用对数记为lg。称以无理数e(e=2.71828...)为底的对数称为自然对数记为ln。零没有对数。在实数范围内,负数无对数。但在复数范围内,负数是有对数的。

    以上是小编整理的有关log函数运算及性质的相关知识,希望可以给大家一些帮助。

    展开全文
  • 举例子计算log29=y 2的0次方和N作比较,1<9 2的1次方和N作比较,2<9 2的2次方和N作比较,4<9 2的3次方和N作比较,8<9 2的4次方和N作比较,16>9 那么相当于y=log...

    解题思路

    由于log2N=y 相当于 “2的y次方=n”
    因此:本题等价于:
    举例子计算log29=y
    2的0次方和N作比较,1<9
    2的1次方和N作比较,2<9
    2的2次方和N作比较,4<9
    2的3次方和N作比较,8<9
    2的4次方和N作比较,16>9
    那么相当于y=log29的范围在(3,4),那么则取3(不大于 log2N 的最大整数)

    java代码

    package homework1_1;
    
    /**
     * @description: ${description}
     * @create: 2019-02-03
     **/
    public class W1_1_14 {
        //方法1
        public static int lg1(int n){
            //logxN=logeN/logex,
            //log2x=loge x/loge2
            double a=Math.log(n)/Math.log(2);
            return (int)Math.floor(a);
        }
        //方法2
        public static int lg2(int n){
            int i=1;
            int result=1;
            int count=0;
            while(result<n){
                for(int j=0;j<n;j++){
                    result=result*2;
                    count++;
                    if(result>n){
                        count--;
                        break;
                    }
                }
            }
            return count;
        }
        //方法3
        public static int lg3(int n) {
            int i = 2;
            int j = 0;
            while (true) {
                i *= 2;
                j++;
                if (i >= n) {
                    return j;
                }
            }
        }
        //测试
        public static void main(String[] args) {
            for(int i=1;i<20;i++){
                int lg1 = lg1(i);
                int lg2 = lg2(i);
                int lg3 = lg3(i);
                System.out.print("N:"+i+" log2N为 ");
                System.out.print(lg1+"\t");
                System.out.print(lg2+"\t");
                System.out.print(lg3+"\t");
                System.out.println();
            }
        }
    }
    

    结果

    在这里插入图片描述

    展开全文
  • 最归并算法中 递归树的高度 为什么是 lgn 而不是 log(2)n ?...查资料,说是 Θ(lgn)和Θ(log2n)并无区别 为什么? 求人帮忙解释 , 谢谢!! 归并算法 网址:http://learn.akae.cn/media/ch11s04.html
  • 由于二分查找每次查询都是从数组中间切开查询,所以每次查询,剩余的查询数为上一次的一半...=1,我们计算时间复杂度是按照最坏的情况进行计算,也就是是查到剩余最后一个数才查到我们想要的数据,也就是 N/(2^K)=1 ...

    由于二分查找每次查询都是从数组中间切开查询,所以每次查询,剩余的查询数为上一次的一半,从下表可以清晰的看出查询次数与剩余元素数量对应关系

    表-查询次数及剩余数
    第几次查询    剩余待查询元素数量

    分析:

    因为二分查找每次排除掉一半的不适合值,所以对于n个元素的情况:

    一次二分剩下:n/2
    两次二分剩下:n/2/2 = n/4

    m次二分剩下:n/(2^m)

    在最坏情况下是在排除到只剩下最后一个值之后得到结果,即

    n/(2^m)=1

    所以由上式可得 : 2^m=n

    进而可求出时间复杂度为: log2(n)

    从上表可以看出N/(2^K)肯定是大于等于1,也就是N/(2^K)>=1,我们计算时间复杂度是按照最坏的情况进行计算,也就是是查到剩余最后一个数才查到我们想要的数据,也就是
    N/(2^K)=1
    =>N=2^K
    =>K=log2N
    所以二分查找的时间复杂度为O(log2N) 可得k=log2n,(是以2为底,n的对数),所以时间复杂度可以表示O()=O(logn)
    ————————————————

    展开全文
  • 算法复杂度分为时间复杂度和空间复杂度,二者也是衡量代码的好坏两个重要指标,常见时间复杂度排序为:O(1)(log2n)(n)(n^2)

    算法复杂度分为时间复杂度空间复杂度二者也是衡量代码的好坏两个重要指标:

    • 时间复杂度:指执行算法所需要的计算工作量;
    • 间复杂度:指执行这个算法所需要的内存空间。

    算法的复杂性体现在运行该算法时的计算机所需资源的多少上,计算机资源最重要的是时间和空间(即寄存器)资源,因此复杂度分为时间和空间复杂度。

    1. 概念理解

    1.1 基本执行次数:T(n)

    由于运行环境和输入规模的影响,代码的绝对执行时间是无法估计的,但我们可以估算出代码的基本执行次数。

    一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用这个函数来表达相对时间,可以记作 T(n)。

    1.2 时间复杂度:O(n)

    因为执行规则具有不确定性(文章下面就列举4种可能), 所以T(n) 不足以分析和比较一段代码的运行时间,就有了渐进时间复杂度(asymptotic time complexity)的概念,官方的定义如下:

    若存在函数 f(n),使得当n趋近于无穷大时,T(n)/ f(n)的极限值为不等于零的常数,则称 f(n)是T(n)的同数量级函数。记作 T(n)= O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称:时间复杂度。

    渐进时间复杂度用大写“O”来表示,所以也被称为大O表示法。

    算法时间复杂度里有O(1), O(n), O(logn), O(nlogn), O(n^2)的概念,这是算法的时空复杂度的表示。

    它不仅仅用于表示时间复杂度,也用于表示空间复杂度

    O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量

    1.3 空间复杂度:S(n)

    与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量,记作:S(n)=O(f(n)) 。

    上面提到过,O(n)不仅仅用于表示时间复杂度,也用于表示空间复杂度。

    2. 场景分析:

    这是针对时间复杂度的场景分析,时间复杂度排序为:O(1)< O(log2n)< O(n)< O(n^2)

    场景1:T(n) =  O(1)

    表示算法的运行时间为常量,这是最低的时空复杂度了,也就是耗时/耗空间与输入数据大小无关,无论输入数据增大多少倍,耗时/耗空间都不变。

    哈希算法就是典型的O(1)时间复杂度,无论数据规模多大,都可以在一次计算后找到目标(不考虑冲突的话)。

    场景2:T(n) =  O(log2n)

    当数据增大n倍时,耗时增大log n倍(这里的log是以2为底的,比如,当数据增大256倍时,耗时只增大8倍,是比线性还要低的时间复杂度)。

    二分查找就是O(log n)的算法,每找一次排除一半的可能,256个数据中查找只要找8次就可以找到目标。

    场景3:T(n) =  O(n)

    表示该算法是线性算法,数据量增大几倍,耗时也增大几倍。

    比如常见的for循环遍历,要找到一个数组里面最大的一个数,你要把n个变量都扫描一遍,操作次数为n,那么算法复杂度是O(n)。

    场景4:T(n) =  O(n^2)

    代表数据量增大n倍时,耗时增大n的平方倍,这是比线性更高的时间复杂度。

    比如冒泡排序,就是典型的O(n^2)的算法,对n个数排序,需要扫描n×n次。

    在编程的世界中有着各种各样的算法,除了上述的四个场景,还有许多不同形式的时间复杂度,我们按照时间复杂度,按数量级递增依次排列为:

    常数阶 O(1) <  对数阶(log2n) < 线性阶 O(n)<  线性对数阶 O(nlog2n) < 平方阶 O(n^2) < 立方阶 O(n^3) < k次方阶 O(n^k) < 指数阶 O(2^n)……

    3. 算法比较:

    排序算法

      平均时间

    最差情形

    稳定度

    额外空间

    备注

    冒泡

     O(n 2 )

     O(n 2 )

    稳定

    O(1)

    n 小时较好

    交换

      O(n 2 )

      O(n 2 )

    不稳定

    O(1)

    n 小时较好

    选择

     O(n 2 )

     O(n 2 )

    不稳定

    O(1)

    n 小时较好

    插入

     O(n 2 )

     O(n 2 )

    稳定

    O(1)

    大部分已排序时较好

    基数

    O(log R B)

    O(log R B)

    稳定

    O(n)

    B 是真数 (0-9) ,

    R 是基数 ( 个十百 )

    Shell

    O(nlogn)

    O(n s ) 1<s<2

    不稳定

    O(1)

    s 是所选分组

    快速

    O(nlogn)

    O(n 2 )

    不稳定

    O(nlogn)

    n 大时较好

    归并

    O(nlogn)

    O(nlogn)

    稳定

    O(1)

    n 大时较好

    O(nlogn)

    O(nlogn)

    不稳定

    O(1)

    n 大时较好

     

    借鉴了一些官方统计,再加上自己的理解,整理了一篇比较全面的关于介绍时间复杂度的博客,内容涵盖了从概念延伸到原理,再到算法的总结,希望对大家有一定的帮助。

     

    少侠请留步 ... ヾ(◍°∇°◍)ノ゙ ... 
    欢迎点赞、评论、加关注,让更多人看到学到赚到
    更多精彩,请关注我的"今日头条号":Java云笔记

    展开全文
  • 算法复杂度描述中为什么用“logn”,而不用“log2n”、“lnn”或“lgn” 原因 假如有logaB(a为底数),由换底公式可得: logcA(c为底数)为常数,由O的运算规则"O(C×f(N))=O(f(N)),其中C是一个正的...
  • 如何使用计算器计算对数示例(使用...计算机上的log都是默认以10为底的对数,因此log100 = 2,log1000 = 3。如果需要计算以非10为底的对数,要使用换底公式,比如想计算以7为底12的对数,在计算器上的操作应该是 (lo...
  • 有没有O(log n)的方法呢?得二分思想了。这里的二分是指减少乘法的次数,把重复的运算省去。我要求x的n次方,那么先求x的n/2次方,然后两个相乘起来。如此递归下去。 参考 剑指offer16题 110页 ###切波那契...
  • 在学习数据结构的过程中,时间复杂度是我们最先接触到的概念,...2.对数阶O(log2n) 3.线性阶O(n) 4.线性对数阶O(nlog2n) 5.平方阶O(n^2) 6.立方阶O(n^3) 7.k次方阶O(n^k) 8.指数阶O(2^n) 二.代码分析 1).
  • ②N =1, log2(1) = 0, 结果为0 。 ③0 ④N>1, log2(N)为正数,值为0或者正数。当N开2的k次方小于1时,k-1即为所求。 基于java的算法实现: public class log { /** * 使用Math库 * @
  • 2.则k<=log2N 3.即2的k次方小于等于N 4.第三条中2的k次方肯定大于0,以及题目要求一个整形参数N 5.可以肯定N为正整数,k的值为0或正整数 6.代码中设M为2的k次方,从k=0时开始循环,即M=1java代码: public ...
  • 平衡二叉树又称AVL树,它或者是一棵空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树, ...如上图所示,比较的最多肯定是要到深度最大的结点上了,最终比较次数就是5次了,而不是 log2N
  • 计算时间复杂度时,o(log2(2n))与o(log2(n))相同吗, 区别在于n前多个系数,
  • 计算log(N!)

    千次阅读 2017-04-22 13:36:49
    poj1423是一道计算阶乘位数的题,假设我们要求10!的位数,我们知道log10(10!)的值向下取整就是10!的位数,这里我们用stirling公式: lnN!=NlnN-N+0.5ln(2N*pi)
  • C语言之计算log2

    千次阅读 2016-08-02 16:13:00
    #include<stdio.h>int main(){int num,count=0,i=0,ret=0;scanf("%d",&num);count=num;while(num>1){ num/=2; ret++;}printf("log2 of %d = %d\n",count,ret);...}/*64log2 of 64 = 6Pre...
  • 方法一: 根据换底公式:X代表以2为底的对数 Log2(x)=LnX/Ln2 或者 ...例如计算以2为底8的对数,输入的顺序为:8,log,➗,2,log,= 如下图 方法二: 计算以2为底8的对数:输入顺序如下图 ...
  • C 里 求 log2 N 的问题

    千次阅读 2015-03-19 11:34:25
     已知,节点数 为 n 的 完全 二叉树的 深度 k 为 : k = log2 N + 1,log2N向下取整。查了 一下 C 里 math.h 只有 log 和 log10 的函数。log 是 以 e 为底数, log10 是以 10 为底数,那怎么 求 以2为底的树呢?  ...
  • 数据结构计算

    千次阅读 2020-08-07 13:20:51
    【解答】 log2n, n1/2+log2n, n, nlog2n, n2+log2n, n3, n-n3+7n5, 2n/2, (3/2)n, n! 2、对下列用二元组表示的数据结构 , 试分别画出对应的逻辑结构图, 并指出属于何种结构。 ⑴ A=(D,R), 其中 D={a1, a2, a3, a4...
  • 一个简单的log2(x)的快速计算方法

    万次阅读 2018-01-05 22:47:14
    最近因为某一些原因,需要要求高速计算一下常用对数的值。但是自然对数的快速算法和常用对数的快速算法都没想到......只得去找那个以2为底的对数值的快速运算方法了,由于精度要求不高(大约0.1即可),固可以尝试...
  • 给定三个整数a,b,Ka,b,Ka,b,K,求使得na⌈log2n⌉b&amp;lt;=Kna⌈log2n⌉b&amp;lt;=Kn^a {\lceil log_2n\rceil}^b nnn的最大值。 思路: 因为函数单调,显然可以直接二分nnn去验证。 此题有两个需要...
  • 计算机组成原理中总线判优方法中计数器查询方式,大致用log2N根线是怎么算出来的
  • 2N点实序列的FFT, MATLAB CODE

    千次阅读 2016-09-26 22:49:50
    2N点实序列的FFT ...function X = fft_2N(x) ...% 计算长度为2N的实序列的FFT % John G.Proakis,数字信号处理,第四版 % Define variables: % x --- Input real vector of length 2*N(power o
  • Java中自己实现log2(N)

    千次阅读 2019-01-24 10:32:35
    在刷题过程中需要使用到log2(N),但是java中只有log...所以:log2N=logeN/loge2,logeN代表以e为底的N的对数,loge2代表以e为底的2的对数。 实现为: public double log2(double N) { return Math.log(N)/...
  • 2N点实序列的FFT

    千次阅读 2018-10-25 08:54:47
    空间 ...% 计算长度为2N的实序列的FFT % John G.Proakis,数字信号处理,第四版   % Define variables: % x --- Input real vector of length 2*N(power of 2) % X --- Output vector,FFT res...
  • 二分法的时间复杂度计算

    千次阅读 2019-05-09 17:26:34
    先说下定义O(log2n)与O(n)的区别 O(log2n)含义说明: 比如123456789,你要找2,首先查中间元素5,大于2,所以直接排除掉5右边的6789,然后在1234里继续二分查找。每次排除1/2的元素,所以是O(log2n)。 O(n)含义...
  • 算法时间复杂度计算

    千次阅读 2016-05-16 11:41:11
    引言 常用的算法的时间复杂度和空间复杂度 排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O(n2) O(n2) 稳定 O(1) 快速排序 ...O(n*log2n) ...O(log2n)~O
  • 找到条件规模[while(i<=n)],这里规模就是 i<...得出结论,立即推 时间复杂度为log2N 注意事项,有时候变量不是单一简单的改变,可能会随着另外一个变量的改变而改变,需要细心对待! ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,683
精华内容 10,673
关键字:

计算log2n