日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python小白-day4递归和算法基础

發(fā)布時間:2025/3/15 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python小白-day4递归和算法基础 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

遞歸&算法基礎

一、遞歸

遞歸函數(shù)的優(yōu)點是定義簡單,邏輯清晰。理論上,所有的遞歸函數(shù)都可以寫成循環(huán)的方式,但循環(huán)的邏輯不如遞歸清晰。

使用遞歸函數(shù)需要注意防止棧溢出。在計算機中,函數(shù)調(diào)用是通過棧(stack)這種數(shù)據(jù)結(jié)構(gòu)實現(xiàn)的,每當進入一個函數(shù)調(diào)用,棧就會加一層棧幀,每當函數(shù)返回,棧就會減一層棧幀。由于棧的大小不是無限的,所以,遞歸調(diào)用的次數(shù)過多,會導致棧溢出。

12345678def calc(n):????print(n)????if n/2>1:????????ret = calc(n/2)????????print(ret)????print('N',n)????return ncalc(10)


二、二分法

主要使用折半查找算法和利用遞歸函數(shù)來實現(xiàn)。因為每次取中間數(shù)字后,都會產(chǎn)生左右兩個數(shù)組,
需要使用隊列把數(shù)組存起來,然后輸入遞歸函數(shù)內(nèi)計算中間數(shù)字。遞歸函數(shù)終止條件是:1)中間數(shù)字
與左邊最小的數(shù)字相鄰;2)中間數(shù)字與右邊最大的數(shù)字相鄰。

代碼實現(xiàn):

12345678910111213141516def binary_search(data_source,find_num):????mid = int(len(data_source)/2)????if len(data_source) >1:????????if data_source[mid] > find_num:????????????binary_search(data_source[:mid],find_num)????????????print('data in left of [%s]'%data_source[mid])????????elif data_source[mid] < find_num:????????????binary_search(data_source[mid:],find_num)????????????print('data in right of [%s]'%data_source[mid])????????else:????????????print('found',data_source[mid])????else:????????print('cannot found')if __name__ == '__main__':????data = list(range(1,600000))????binary_search(data,75000)


三、用遞歸實現(xiàn)斐波那契數(shù)列

12345678def fun(arg0,arg1,stop):????if arg0 == 0:????????print(arg0,arg1)????arg2 = arg0 + arg1????if arg2 < stop :????????print(arg2)????????fun(arg1,arg2,stop)fun(0,1,1000)


四、二維數(shù)組轉(zhuǎn)換

需求:生成一個4*4的二維數(shù)組并將其順時針旋轉(zhuǎn)90度

核心思想:數(shù)組下標的對應關系可以一一對應轉(zhuǎn)換。

1234567891011data = [[col for col in range(4)] for row in range(4)]for i in data:????print(i)for r_index,row in enumerate(data):????for c_index in range(r_index,len(row)):????????tmp = data[c_index][r_index]????????data[c_index][r_index] = row[c_index]????????data[r_index][c_index] = tmpprint('--------------------')for i in data:????print(i)


五、冒泡排序

12345678910#!/usr/bin/env pythondata = [10,4,33,21,54,3,8,11,5,22,2,1,17,13,6]for i in range(len(data)):????for j in range(len(data)-1-i):????????if data[j] > data[j+1]:????????????tmp = data[j+1]????????????data[j+1] = data[j]? ????????????data[j] = tmp????????????#data[j],data[j+1] = data[j+1],data[j] #這種方式也可以????print(data)


六、時間復雜度

(1)時間頻度?一個算法執(zhí)行所耗費的時間,從理論上是不能算出來的,必須上機運行測試才能知道。但我們不可能也沒有必要對每個算法都上機測試,只需知道哪個算法花費的時間多,哪個算法花費的時間少就可以了。并且一個算法花費的時間與算法中語句的執(zhí)行次數(shù)成正比例,哪個算法中語句執(zhí)行次數(shù)多,它花費時間就多。一個算法中的語句執(zhí)行次數(shù)稱為語句頻度或時間頻度。記為T(n)。(2)時間復雜度?在剛才提到的時間頻度中,n稱為問題的規(guī)模,當n不斷變化時,時間頻度T(n)也會不斷變化。但有時我們想知道它變化時呈現(xiàn)什么規(guī)律。為此,我們引入時間復雜度概念。?一般情況下,算法中基本操作重復執(zhí)行的次數(shù)是問題規(guī)模n的某個函數(shù),用T(n)表示,若有某個輔助函數(shù)f(n),使得當n趨近于無窮大時,T(n)/f(n)的極限值為不等于零的常數(shù),則稱f(n)是T(n)的同數(shù)量級函數(shù)。記作T(n)=O(f(n)),O(f(n))?為算法的漸進時間復雜度,簡稱時間復雜度。指數(shù)時間指的是一個問題求解所需要的計算時間m(n),依輸入數(shù)據(jù)的大小而呈指數(shù)成長(即輸入數(shù)據(jù)的數(shù)量依線性成長,所花的時間將會以指數(shù)成長)
12345for (i=1; i<=n; i++)???????x++;for (i=1; i<=n; i++)???? for (j=1; j<=n; j++)??????????x++;

第一個for循環(huán)的時間復雜度為Ο(n),第二個for循環(huán)的時間復雜度為Ο(n2),則整個算法的時間復雜度為Ο(n+n2)=Ο(n2)。

常數(shù)時間

?

若對于一個算法,的上界與輸入大小無關,則稱其具有常數(shù)時間,記作時間。一個例子是訪問數(shù)組中的單個元素,因為訪問它只需要一條指令。但是,找到無序數(shù)組中的最小元素則不是,因為這需要遍歷所有元素來找出最小值。這是一項線性時間的操作,或稱時間。但如果預先知道元素的數(shù)量并假設數(shù)量保持不變,則該操作也可被稱為具有常數(shù)時間。

?

對數(shù)時間?

若算法的T(n)?=?O(log?n),則稱其具有對數(shù)時間

常見的具有對數(shù)時間的算法有二叉樹的相關操作和二分搜索。

對數(shù)時間的算法是非常有效的,因為每增加一個輸入,其所需要的額外計算時間會變小。

遞歸地將字符串砍半并且輸出是這個類別函數(shù)的一個簡單例子。它需要O(log?n)的時間因為每次輸出之前我們都將字符串砍半。?這意味著,如果我們想增加輸出的次數(shù),我們需要將字符串長度加倍。

 

線性時間 

如果一個算法的時間復雜度為O(n),則稱這個算法具有線性時間,或O(n)時間。非正式地說,這意味著對于足夠大的輸入,運行時間增加的大小與輸入成線性關系。例如,一個計算列表所有元素的和的程序,需要的時間與列表的長度成正比。



來自為知筆記(Wiz)

轉(zhuǎn)載于:https://www.cnblogs.com/hetan/p/5178554.html

總結(jié)

以上是生活随笔為你收集整理的python小白-day4递归和算法基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 里番acg★同人里番本子大全 | 精品玖玖玖 | avwww. | 国模无码一区二区三区 | 精品一二三四 | 亚洲成人系列 | 午夜美女视频 | 精品国产综合区久久久久久 | 熟女熟妇伦久久影院毛片一区二区 | 在线观看的黄网 | 欧美久久久久久久久久久久久久 | 美日韩视频 | 久久精品男人 | 你懂的网站在线观看 | 优优色综合| 亚洲成人久 | 日本wwwwwww | av片观看| 亚洲美女激情视频 | 色姑娘综合网 | 极品销魂美女一区二区三区 | 污导航在线观看 | 男人的天堂免费视频 | 免费一级片 | 久久久精 | 精品久久久亚洲 | 樱桃成人精品视频在线播放 | 麻豆传媒在线看 | 超碰狠狠干 | 久久精品波多野结衣 | 伊人伊人网| 波多野结衣高清电影 | 国产日产精品一区二区三区 | 中文字幕人妻丝袜乱一区三区 | 亚洲一区欧洲二区 | 一区二区三区四区五区av | 爱情岛av | 国产主播一区 | 久久久久久久久久久av | 中文字幕在线免费 | 天天爱天天操 | 中文字幕人妻熟女在线 | 久久久久久久成人 | 欧美小视频在线观看 | 又黄又刺激的视频 | 狂野欧美性猛交免费视频 | 日本久久久久久久久久久 | 日韩一级av毛片 | 精品久久中文 | 丝袜美女被c | 日韩在线激情 | 狠狠躁18三区二区一区视频 | www.97超碰 | 午夜亚洲aⅴ无码高潮片苍井空 | 欧洲一级黄色片 | 拔插拔插影库 | 日韩黄色片 | 国产人妖在线播放 | 糖心logo在线观看 | 亚洲av色香蕉一区二区三区 | 日韩大片免费观看 | 一区二区视频免费 | 麻豆91精品91久久久 | 91av久久 | 成人福利在线播放 | 成人中文在线 | 国产精品国产一区 | 日韩特黄毛片 | 国产午夜精品一区二区 | 18色av| 亚洲午夜精品久久久久久浪潮 | 激情网页 | 久久亚洲无码视频 | 18禁网站免费无遮挡无码中文 | 91精品国产91久久久 | 成人aⅴ视频| 秘密基地动漫在线观看免费 | 91免费 看片| 亚洲av不卡一区二区 | 四季av在线一区二区三区 | 96日本xxxxxⅹxxx17 | 亚洲爆乳无码精品aaa片蜜桃 | 亚洲激情视频网站 | 人人射人人爱 | 国产精品1区 | 九九九久久久久 | 国产婷婷色一区二区三区 | 成人永久视频 | 人妻熟女一区二区三区 | 成在人线av | 97精品人妻一区二区三区 | 好看的中文字幕电影 | 国产三级国产精品 | 2020国产精品视频 | 亚洲色成人网站www永久四虎 | 丝瓜色版 | 污视频网站免费在线观看 | 岛国伊人 | 手机在线亚洲 |