递归函数,冒泡排序

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

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('\t'*n,file)     #打印文件名
            func(f_d,n+1)
        else:               #如果不是文件夹
            print('\t'*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)

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

 

posted @ 2018-08-15 20:51  傻白甜++  阅读(1168)  评论(0编辑  收藏  举报
TOP