码迷,mamicode.com
首页 > 编程语言 > 详细

算法基本概念

时间:2018-01-31 22:19:30      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:插入排序   ace   算法分析   baidu   效率   分析   ike   gpo   targe   

一 算法复杂度

同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度空间复杂度来考虑。

空间复杂度:

空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。比如直接插入排序时间复杂度是O(n^2),空间复杂度是O(1) 。而一般的递归算法就要有O(n)的空间复杂度了,因为每次递归都要存储返回信息。

二 递归

def foo(x):
    if x == 1:
        print(foo)
    else:
        foo(x-1)
        print(x)

def bar(x):
    if x == 1:
        print(bar)
    else:
        print(x)
        bar(x-1)


foo(4)
print(=*20)
bar(4)

感受下输出结果

foo
2
3
4
====================
4
3
2
bar

不难理解,递归的是foo或bar,但是常规的前面后面的该执行的还是要执行的呀。

用一个盒子模型,就很明了了。

  

 技术分享图片

 

  所以,如果想输入xxxxxxxxxhello,worldooooooooo,类似这样的效果,用递归,可以这样写。

def foo(n):
    if n == 0:
        print(hello,world,end=‘‘)
    else:
        print(xx,end=‘‘)
        foo(n-1)
        print(oo,end=‘‘)
foo(4)

  输出:

xxxxxxxxhello,worldoooooooo

 

算法基本概念

标签:插入排序   ace   算法分析   baidu   效率   分析   ike   gpo   targe   

原文地址:https://www.cnblogs.com/654321cc/p/8394521.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!