程序基础:数据结构(郝斌讲解)(一)
開始寫博客,目標(biāo)一周一個項(xiàng)目總結(jié),可能是一個具體的問題的求解方法,也可能是一周的學(xué)習(xí)筆記,還可能是一個算法的實(shí)現(xiàn)。
從2013年開始補(bǔ)起來
本周學(xué)習(xí)重點(diǎn)
數(shù)據(jù)結(jié)構(gòu)
什么是數(shù)據(jù)結(jié)構(gòu)?
數(shù)據(jù)結(jié)構(gòu)概述:數(shù)據(jù)結(jié)構(gòu),簡單的說是怎么把數(shù)據(jù)存在電腦里方便我們處理
1定義
書籍作者:嚴(yán)蔚明,吳偉民,高一凡,黃國瑜。
數(shù)據(jù)結(jié)構(gòu)定義:
將現(xiàn)實(shí)中大量復(fù)雜的問題以特定的數(shù)據(jù)類型和特定存儲結(jié)構(gòu)保存到我們的
主存儲器中 ,以及在此基礎(chǔ)上為實(shí)現(xiàn)某個功能而執(zhí)行相應(yīng)的操作,這個相應(yīng)的操作也叫算法。
數(shù)據(jù)的存儲是很關(guān)鍵的問題,一個大的數(shù)據(jù)最好用鏈表。
通過計算機(jī)解決一個實(shí)際問題,將一個復(fù)雜的問題,
存儲到計算機(jī)中去。如何保存?zhèn)€體,如何保存?zhèn)€體與個體的屬性
屬性實(shí)體,如何保存。
數(shù)據(jù)結(jié)構(gòu)=個體+個體的關(guān)系
算法=對存儲數(shù)據(jù)的操作。
從廣義上講,算法與數(shù)據(jù)沒關(guān)系,
狹義 有關(guān)系,泛型。
數(shù)組,圖,
每個元素拿出來。
操作依賴于存儲結(jié)構(gòu)。
2算法
預(yù)備知識
模塊一:
一線性結(jié)構(gòu):
2.1連續(xù)存儲數(shù)組,離散存儲鏈表。
2.2線性結(jié)構(gòu)的兩種常見應(yīng)用之一——棧,隊(duì)列。
專題:遞歸。
1.1+2+3,求階乘,漢諾塔,走迷宮。
二非線性結(jié)構(gòu)
1樹,
2圖。
三查找和排序
折半和排序:冒泡,插入,選擇,快速,歸并。
Java中容器和數(shù)據(jù)結(jié)構(gòu)相關(guān)知識。
Iterator 借口,map,哈希表。
2衡量算法的標(biāo)準(zhǔn),解題方法和步驟。
2.1時間復(fù)雜度
大概程序要運(yùn)行的次數(shù),程序速度快。
2.2空間復(fù)雜度
算法運(yùn)行過程中大概所占用的最大內(nèi)存2.3易讀性
別人能不能很清晰的看懂你的程序。
2.4健壯性
識別非法輸入。
三
數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)
數(shù)據(jù)結(jié)構(gòu)是軟件中最核心的課程。
棧內(nèi)存與堆內(nèi)存的區(qū)別,內(nèi)存分配方法的不同。
語法是語句的樹。
數(shù)據(jù)庫和數(shù)據(jù)結(jié)構(gòu)的差別。
數(shù)據(jù)庫簡化版。
數(shù)據(jù)的存儲問題,字段,記錄,表。
實(shí)物與實(shí)物的關(guān)系。
學(xué)了以后和沒學(xué)沒什么區(qū)別。
程序=數(shù)據(jù)的存儲+數(shù)據(jù)的操作+可以被計算機(jī)執(zhí)行的語言
預(yù)備知識。
數(shù)據(jù)結(jié)構(gòu)
很重要,難度很大,但沒啥具體用處。
四
數(shù)據(jù)結(jié)構(gòu)的學(xué)法:
1 寫偽代碼。
2 通過一個語言去實(shí)現(xiàn)你的偽代碼。
高深的圖算法,鏈表是前提。
C語言指針講的少。
指針,結(jié)構(gòu)體,動態(tài)內(nèi)存的分配和釋放。
線性鏈表。
鏈表的基本操作。
看這個很難,但看懂后會有種,自我挑戰(zhàn)的快感。
爭取了解指針的一部分。
總結(jié)
以上是生活随笔為你收集整理的程序基础:数据结构(郝斌讲解)(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nio和bio的原理_Java的BIO,
- 下一篇: 进程管理程序java,运维经验分享(四)