遞歸函數,冒泡排序

遞歸: 在函數中調用函數自己. 就是遞歸

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

在python中,遞歸的深度最大到998python

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

遞歸的應用: 咱們能夠使用遞歸來遍歷各類樹形結構, 好比咱們的文件夾系統. 能夠使用遞歸來遍歷該文件夾中的全部文件dom

遍歷 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)

缺點: 冒泡排序解決了桶排序浪費空間的問題, 可是冒泡排序的效率特別低

相關文章
相關標籤/搜索