zoukankan      html  css  js  c++  java
  • 递归函数,冒泡排序

    递归: 在函数中调用函数本身. 就是递归

    def func():
     print("我是谁")
     func()
    func()

    在python中,递归的深度最大到998

    def foo(n):
     print(n)
     n += 1
     foo(n)
    foo(1)

    递归的应用: 我们可以使用递归来遍历各种树形结构, 比如我们的文件夹系统. 可以使用递归来遍历该文件夹中的所有文件

    遍历 D:/作业 文件夹, 打印出所有的文件和普通文件的文件名
    import os
    def func(filepath,n):
        # 1,打开这个文件
        files=os.listdir(filepath)
        # 2,拿到每一个文件名
        for file in files:  #文件名
            # 3,获取到路径
            f_d=os.path.join(filepath,file) # d:/课程/文件名/
            # 4,判断是否是文件夹
            if os.path.isdir(f_d):
                # 5,如果是文件夹,再来一遍
                print('	'*n,file)     #打印文件名
                func(f_d,n+1)
            else:               #如果不是文件夹
                print('	'*n,file)
    func('D:课程',0)

    冒泡排序

    冒泡排序的思想: 每次比较两个相邻的元素, 如果他们的顺序错误就把他们交换位置

    import random
    def bubble_sort(li):
    for i in range(len(li)-1): # i表示第n趟 一共n或者n-1趟
    exchange = False
    for j in range(len(li)-i-1): # 第i趟 无序区[0, n-i-1] j表示箭头 0~n-i-2
    if li[j] > li[j+1]:
    li[j], li[j+1] = li[j+1], li[j]
    exchange = True
    if not exchange:
    break


    li = list(range(10000))
    random.shuffle(li)
    bubble_sort(li)
    # 最好情况O(n) 平均情况O(n^2) 最坏情况O(n^2)

    缺点: 冒泡排序解决了桶排序浪费空间的问题, 但是冒泡排序的效率特别低

  • 相关阅读:
    Ajax校验
    Struts2国际化
    OGNL
    Struts2基础数据校验和框架校验
    http
    AES,BigInteger,MD5加密
    随笔 js-----------------------------------------------------------------------------------------------------
    13年总结js,css,java xml
    window、linux安装jdk,excel 导入oracle,WebService,window 端口查看,svn服务安装,oracle用户解锁
    经典sql语句
  • 原文地址:https://www.cnblogs.com/feifeifeisir/p/9483930.html
Copyright © 2011-2022 走看看