重金悬赏,求大佬们帮忙解析下数据结构与算法中的 时间复杂度 到底是怎么算的??最好能给出步骤和例子!在此感激

上传的附件
你的回答被采纳后将获得: 15点积分 (将会扣除手续费1点积分。)

keyboard_arrow_left上一篇 : 自学Python语言,是看书好还是看视频好呢? 现在写Windows驱动开发还有活路么? : 下一篇keyboard_arrow_right

4个回答

OrdinAry
2019-01-29 20:19:00

就是简单地计算下最大次数之类的

Gentleman
2019-01-30 10:04:15

求解算法的时间复杂度的具体步骤是:

  • 找出算法中的基本语句;算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。

  • 计算基本语句的执行次数的数量级;只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率。

  • 用大Ο记号表示算法的时间性能。将基本语句执行次数的数量级放入大Ο记号中。

如果算法中包含嵌套的循环,则基本语句通常是最内层的循环体,如果算法中包含并列的循环,则将并列循环的时间复杂度相加。例如:

  1. for (i=1; i<=n; i++)
  2. x++;
  3. for (i=1; i<=n; i++)
  4. for (j=1; j<=n; j++)
  5. x++;

第一个for循环的时间复杂度为Ο(n),第二个for循环的时间复杂度为Ο(n2),则整个算法的时间复杂度为Ο(n+n2)=Ο(n2)。

nouveau
2019-02-01 18:10:15

计算执行最长次数?

Withdrawn
2019-02-09 11:42:56

结贴啦~

精彩评论

  • 堆和栈有什么区别???
    栈 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等 栈是向低地址扩展的数据结构,是一块连续的内存的区域。是栈顶的地址和栈的最大容量是系统预先规定好的,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数 ) 堆 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存
    2019-01-08 08:47:05 thumb_up( 6 )
  • 大家是怎么开发游戏的啊?
    加油吧,你是怎么学会编程的,就怎么去学开发游戏!从0到1是最难的,从1到N相对来说比较容易
    2019-04-18 09:06:03 thumb_up( 2 )
  • [80x86汇编]说说你理解的栈是什么?
    栈就是一段特殊内存,什么是栈呢?举个例子,一个只有上面打开的盒子,现在有三本书离散数学、c语言、汇编语言,需要将这三本书一本一本的放进去,先将离散数学放进去,然后c语言,接着汇编语言,现在又需要将三本书拿出去,只能先拿汇编语言,再拿c语言接着再拿离散数学,栈就是这样的特点,后进先出。 栈的大小怎么确认呢?这是靠我们自己决定的,如何确定这段内存为栈,就需要两个寄存器,段寄存器ss和存放偏移地址的寄存器sp,比如我们决定10000-1000f为寄存器那么ss:sp 一开始应该为 1000:0010执行栈有两个指令push,pop,push是入栈执行过程是先sp+2之后在把数据放进去,pop指令是先出栈,先将指令放进栈接着再sp-2,就好像把东西放进去房间一样,需要先开门再把东西放进去,把东西拿出去,需要把东西拿出去再关门,东西就相当于需要操作的数据,开门和关门就相当于sp+2和sp-2。 栈最大为64kb,这和sp的寻址能力有关,比如 10000-1ffff 为栈,那么 ss:sp 一开始应该指向那里呢?按照之前的算法sp应该为ffff+1 = 10000但是sp只能储存4个字节所以sp = 0,当栈满了之后sp还是为0,这个时候再次入栈0-2 = 0xfffffffe ,所以sp = fffe,之后再次入栈的话就会将原数据给覆盖掉,所以要尽量避免这种情况。
    2019-01-24 13:47:03 thumb_up( 6 )
eject