递归函数,冒泡排序
递归: 在函数中调用函数本身. 就是递归
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)
缺点: 冒泡排序解决了桶排序浪费空间的问题, 但是冒泡排序的效率特别低