一.冒泡排序
给出一个纯数字列表. 请对列表进行排序
思路:
1. 完成a和b的数据交换. 例如, a = 10, b = 24 交换之后, a = 24, b = 10
2. 循环列表. 判断a[i]和a[i+1]之间的大小关系, 如果a[i]比a[i+1]大. 则进行互换. 循环结束的时候. 当前列表中最大的数据就会被移动到最右端.
3. 想一想, 如果再次执行一次上面的操作. 最终第二大的数据就移动到了右端. 以此类推. 如果反复的进行执行相应的操作. 那这个列表就变成了一个有序列表
# 这个算法可以进行优化.
# 冒泡排序,
lst = [5,1,7,2,6,4,5,6]
count = 0
while count < len(lst): # 控制次数
i = 0
while i < len(lst) - 1:
if lst[i] > lst[i + 1]:
lst[i], lst[i + 1] = lst[i + 1], lst[i]
i = i + 1
count = count + 1
print(lst)
# 排序函数
lst.sort()
print(lst)
# 底层c语言的交换过程
# 交换
# abcdefg = 10
# baddfad = 5
# abcdefg,baddfad = baddfad,abcdefg
# # c = a
# # a = b
# # b = c
# print(abcdefg, baddfad)
二.递归算法
# 递归函数, 自己调用自己
# count = 1
# def func():
# global count
# print("超级玛丽", count)
#
# count = count + 1
# func()
# func()
# 递归深度. 你可以自己掉用自己的次数,
# 官方文档中递归最大深度是1000. 在这之前就会给你报错
# # 遍历F:\python文件夹, 打印出所有的文件和普通文件的文件名
# import os
# def func(filepath, n): # d:/sylar/
# # 1,打开这个文件夹
# files = os.listdir(filepath)
# # 2. 拿到每一个文件名
# for file in files: # 文件名
# # 3. 获取到路径
# f_d = os.path.join(filepath, file) # d:/sylar/文件名/
# # 4. 判断是否是文件夹
# if os.path.isdir(f_d):
# # 5. 如果是文件夹. 继续再来一遍
# print("\t"*n, file,":") # 打印文件名
# func(f_d, n + 1)
# else: # 不是文件夹. 普通文件
# print("\t"*n, file)
#
# func('F:\python',0)