數(shù)據(jù)結(jié)構(gòu)與算法的概念引入
常見(jiàn)時(shí)間復(fù)雜度之間的關(guān)系
所消耗的時(shí)間從小到大
O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n。 < O(nn)
Python內(nèi)置類(lèi)型性能分析timeit模塊
timeit模塊可以用來(lái)測(cè)試一小段Python代碼的執(zhí)行速度。
class timeit.Timer(stmt=’pass’, setup=’pass’, timer=
Timer是測(cè)量小段代碼執(zhí)行速度的類(lèi)。
stmt參數(shù)是要測(cè)試的代碼語(yǔ)句(statment);
setup參數(shù)是運(yùn)行代碼時(shí)需要的設(shè)置;
timer參數(shù)是一個(gè)定時(shí)器函數(shù),與平臺(tái)有關(guān)。
timeit.Timer.timeit(number=1000000)
Timer類(lèi)中測(cè)試語(yǔ)句執(zhí)行速度的對(duì)象方法。number參數(shù)是測(cè)試代碼時(shí)的測(cè)試次數(shù),默認(rèn)為1000000次。方法返回執(zhí)行代碼的平均耗時(shí),一個(gè)float類(lèi)型的秒數(shù)。
list內(nèi)置操作的時(shí)間復(fù)雜度
dict內(nèi)置操作的時(shí)間復(fù)雜度
數(shù)據(jù)結(jié)構(gòu)
我們?nèi)绾斡肞ython中的類(lèi)型來(lái)保存一個(gè)班的學(xué)生信息? 如果想要快速的通過(guò)學(xué)生姓名獲取其信息呢?
實(shí)際上當(dāng)我們?cè)谒伎歼@個(gè)問(wèn)題的時(shí)候,我們已經(jīng)用到了數(shù)據(jù)結(jié)構(gòu)。列表和字典都可以存儲(chǔ)一個(gè)班的學(xué)生信息,但是想要在列表中獲取一名同學(xué)的信息時(shí),就要遍歷這個(gè)列表,其時(shí)間復(fù)雜度為O(n),而使用字典存儲(chǔ)時(shí),可將學(xué)生姓名作為字典的鍵,學(xué)生信息作為值,進(jìn)而查詢(xún)時(shí)不需要遍歷便可快速獲取到學(xué)生信息,其時(shí)間復(fù)雜度為O(1)。
我們?yōu)榱私鉀Q問(wèn)題,需要將數(shù)據(jù)保存下來(lái),然后根據(jù)數(shù)據(jù)的存儲(chǔ)方式來(lái)設(shè)計(jì)算法實(shí)現(xiàn)進(jìn)行處理,那么數(shù)據(jù)的存儲(chǔ)方式不同就會(huì)導(dǎo)致需要不同的算法進(jìn)行處理。我們希望算法解決問(wèn)題的效率越快越好,于是我們就需要考慮數(shù)據(jù)究竟如何保存的問(wèn)題,這就是數(shù)據(jù)結(jié)構(gòu)。
在上面的問(wèn)題中我們可以選擇Python中的列表或字典來(lái)存儲(chǔ)學(xué)生信息。列表和字典就是Python內(nèi)建幫我們封裝好的兩種數(shù)據(jù)結(jié)構(gòu)。
概念
數(shù)據(jù)是一個(gè)抽象的概念,將其進(jìn)行分類(lèi)后得到程序設(shè)計(jì)語(yǔ)言中的基本類(lèi)型。如:int,float,char等。數(shù)據(jù)元素之間不是獨(dú)立的,存在特定的關(guān)系,這些關(guān)系便是結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)指數(shù)據(jù)對(duì)象中數(shù)據(jù)元素之間的關(guān)系。
Python給我們提供了很多現(xiàn)成的數(shù)據(jù)結(jié)構(gòu)類(lèi)型,這些系統(tǒng)自己定義好的,不需要我們自己去定義的數(shù)據(jù)結(jié)構(gòu)叫做Python的內(nèi)置數(shù)據(jù)結(jié)構(gòu),比如列表、元組、字典。而有些數(shù)據(jù)組織方式,Python系統(tǒng)里面沒(méi)有直接定義,需要我們自己去定義實(shí)現(xiàn)這些數(shù)據(jù)的組織方式,這些數(shù)據(jù)組織方式稱(chēng)之為Python的擴(kuò)展數(shù)據(jù)結(jié)構(gòu),比如棧,隊(duì)列等。
算法與數(shù)據(jù)結(jié)構(gòu)的區(qū)別
數(shù)據(jù)結(jié)構(gòu)只是靜態(tài)的描述了數(shù)據(jù)元素之間的關(guān)系。
高效的程序需要在數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上設(shè)計(jì)和選擇算法。
程序 = 數(shù)據(jù)結(jié)構(gòu) + 算法
總結(jié):算法是為了解決實(shí)際問(wèn)題而設(shè)計(jì)的,數(shù)據(jù)結(jié)構(gòu)是算法需要處理的問(wèn)題載體
抽象數(shù)據(jù)類(lèi)型(Abstract Data Type)
抽象數(shù)據(jù)類(lèi)型(ADT)的含義是指一個(gè)數(shù)學(xué)模型以及定義在此數(shù)學(xué)模型上的一組操作。即把數(shù)據(jù)類(lèi)型和數(shù)據(jù)類(lèi)型上的運(yùn)算捆在一起,進(jìn)行封裝。引入抽象數(shù)據(jù)類(lèi)型的目的是把數(shù)據(jù)類(lèi)型的表示和數(shù)據(jù)類(lèi)型上運(yùn)算的實(shí)現(xiàn)與這些數(shù)據(jù)類(lèi)型和運(yùn)算在程序中的引用隔開(kāi),使它們相互獨(dú)立。
最常用的數(shù)據(jù)運(yùn)算有五種:
插入
刪除
修改
查找
排序

發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
圖片新聞
-
機(jī)器人奧運(yùn)會(huì)戰(zhàn)報(bào):宇樹(shù)機(jī)器人摘下首金,天工Ultra搶走首位“百米飛人”
-
存儲(chǔ)圈掐架!江波龍起訴佰維,索賠121萬(wàn)
-
長(zhǎng)安汽車(chē)母公司突然更名:從“中國(guó)長(zhǎng)安”到“辰致科技”
-
豆包前負(fù)責(zé)人喬木出軌BP后續(xù):均被辭退
-
字節(jié)AI Lab負(fù)責(zé)人李航卸任后返聘,Seed進(jìn)入調(diào)整期
-
員工持股爆雷?廣汽埃安緊急回應(yīng)
-
中國(guó)“智造”背后的「關(guān)鍵力量」
-
小米汽車(chē)研發(fā)中心重磅落地,寶馬家門(mén)口“搶人”
最新活動(dòng)更多
-
即日-9.1立即下載>> 【限時(shí)下載】ADI中國(guó)三十周年感恩回饋助力企業(yè)升級(jí)!
-
即日-9.16點(diǎn)擊進(jìn)入 >> 【限時(shí)福利】TE 2025國(guó)際物聯(lián)網(wǎng)展·深圳站
-
10月23日立即報(bào)名>> Works With 開(kāi)發(fā)者大會(huì)深圳站
-
10月24日立即參評(píng)>> 【評(píng)選】維科杯·OFweek 2025(第十屆)物聯(lián)網(wǎng)行業(yè)年度評(píng)選
-
11月27日立即報(bào)名>> 【工程師系列】汽車(chē)電子技術(shù)在線大會(huì)
-
12月18日立即報(bào)名>> 【線下會(huì)議】OFweek 2025(第十屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會(huì)
推薦專(zhuān)題
- 1 阿里首位程序員,“掃地僧”多隆已離職
- 2 先進(jìn)算力新選擇 | 2025華為算力場(chǎng)景發(fā)布會(huì)暨北京xPN伙伴大會(huì)成功舉辦
- 3 宇樹(shù)機(jī)器人撞人事件的深度剖析:六維力傳感器如何成為人機(jī)安全的關(guān)鍵屏障
- 4 清華跑出具身智能獨(dú)角獸:給機(jī)器人安上眼睛和大腦,融資近20億
- 5 特朗普要求英特爾首位華人 CEO 辭職
- 6 騰訊 Q2 財(cái)報(bào)亮眼:AI 已成第二增長(zhǎng)曲線
- 7 具身智能機(jī)器人量產(chǎn)前夜,標(biāo)準(zhǔn)機(jī)腦正在成型
- 8 踢館大廠和微軟,剖析WPS靈犀的AI實(shí)用主義
- 9 谷歌吹響AI沖鋒號(hào),AI還有哪些機(jī)會(huì)
- 10 蘋(píng)果把身家押在Siri上:一場(chǎng)輸不起的自我革命