引言 在學(xué)習(xí)了python的基本語(yǔ)法知識(shí)之后,我們接下來(lái)將學(xué)習(xí)一些高級(jí)的知識(shí)——數(shù)據(jù)結(jié)構(gòu)與算法。今天我們開(kāi)始第一節(jié)課,為大家簡(jiǎn)單介紹這門課,同時(shí)回答大家心里對(duì)這門課的疑惑。 一、 什么是數(shù)據(jù)結(jié)構(gòu)?什么是算法?為什么要學(xué)習(xí)它們? 首先是數(shù)據(jù)結(jié)構(gòu),我們所說(shuō)的數(shù)據(jù)結(jié)構(gòu)大致又被細(xì)分為數(shù)據(jù)和結(jié)構(gòu)兩大塊 數(shù)據(jù):客觀事物的符號(hào)表示,是所有能輸入到計(jì)算機(jī)中并能被計(jì)算機(jī)程序處理的符號(hào)的總稱。如:1、數(shù)學(xué)計(jì)算中用到的整數(shù)和實(shí)數(shù);2、文本編輯中用到的字符串;3、多媒體程序處理的圖形、圖像、聲音及動(dòng)畫等通過(guò)特殊編碼定義后的數(shù)據(jù)。 結(jié)構(gòu):由組成整體的各部分的搭配和安排。生活中關(guān)于“結(jié)構(gòu)”我們經(jīng)常見(jiàn)到,如:一棵大樹(shù)可分為樹(shù)干、枝丫和樹(shù)根,河流、馬路的結(jié)構(gòu)同理也可這樣劃分;當(dāng)然這是在我們身邊顯而易見(jiàn)的事物,除此之外如公司里面的職位也是一種結(jié)構(gòu),如圖: 在數(shù)據(jù)結(jié)構(gòu)當(dāng)中我們有幾種常見(jiàn)的結(jié)構(gòu): 接著是算法,算法定義:一個(gè)有窮的指令集,這些指令為解決某一特定任務(wù)規(guī)定了一個(gè)運(yùn)算序列. 算法的描述方式可以是自然語(yǔ)言、流程圖、程序設(shè)計(jì)語(yǔ)言、偽碼。 算法的特性: 輸入 有0個(gè)或多個(gè)輸入 輸出 有一個(gè)或多個(gè)輸出(處理結(jié)果) 確定性 每步定義都是確切、無(wú)歧義的 有窮性 算法應(yīng)在執(zhí)行有窮步后結(jié)束 有效性 每一條運(yùn)算應(yīng)足夠基本 對(duì)于算法的評(píng)價(jià):1、正確性;2、可讀性;3、健壯性;4、高效性(運(yùn)行所需的時(shí)間和空間代價(jià)) 在講解完數(shù)據(jù)結(jié)構(gòu)與算法之后相信大家對(duì)它有了基本的認(rèn)識(shí),有些人可能會(huì)說(shuō)我沒(méi)什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法呢? 二、 為什么要學(xué)習(xí)算法? 高級(jí)算法工程師在社會(huì)上是供不應(yīng)求,所以這第一點(diǎn)學(xué)習(xí)算法可以讓我們找到一個(gè)高薪的工作; 面對(duì)參加本專業(yè)研究生考試的在校大學(xué)生而言,數(shù)據(jù)結(jié)構(gòu)在總分中占的比重高; 打比賽,比如最近華為公司的2019華為軟件精英挑戰(zhàn)賽,面對(duì)這樣的大型比賽,數(shù)據(jù)結(jié)構(gòu)和算法是參賽選手的重量級(jí)武器。 三、 怎么學(xué)習(xí)這門課程? 我們可以通過(guò)很多渠道去學(xué)習(xí)這門課程,但是想要精通這門課程最重要的還是小伙伴們?cè)诳沼鄷r(shí)間上堅(jiān)持練習(xí),同樣也可以在網(wǎng)上去找題來(lái)做。 今天對(duì)數(shù)據(jù)結(jié)與算法的基本認(rèn)識(shí)就到這里了,希望大家多多關(guān)注之后會(huì)更新下一期的內(nèi)容。 |
|