柚子快報(bào)邀請(qǐng)碼778899分享:博主回歸!數(shù)據(jù)結(jié)構(gòu)篇啟動(dòng)
目錄
1>>閑話
2>>數(shù)據(jù)結(jié)構(gòu)前言
3>>復(fù)雜度的概念
4>>時(shí)間復(fù)雜度
5>>大O漸進(jìn)表示法
6>>總結(jié)
1>>閑話
? ? ? ? 家人們好久不見,小編軍訓(xùn)終于是結(jié)束了,大一事情太多了,這幾天沒時(shí)間健身,沒時(shí)間學(xué)習(xí),也沒時(shí)間發(fā)博客,在這先跟大家說聲對(duì)不起!,忙著各種開會(huì)、講座、競(jìng)選、運(yùn)動(dòng)會(huì)、社團(tuán)、部門等等,不過從今天開始,小編應(yīng)該會(huì)周更2-3篇,直到學(xué)完數(shù)據(jù)結(jié)構(gòu),c語(yǔ)言的后續(xù)章節(jié)可能會(huì)在國(guó)慶節(jié)補(bǔ)出來,敬請(qǐng)期待!謝謝!
2>>數(shù)據(jù)結(jié)構(gòu)前言
? ? ? ? 很多小白肯定跟我學(xué)之前一樣,不理解:什么是數(shù)據(jù)結(jié)構(gòu)?為什么要學(xué)數(shù)據(jù)結(jié)構(gòu)?數(shù)據(jù)結(jié)構(gòu)和算法有啥子區(qū)別?這幾個(gè)問題不難回答:第一:數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)存儲(chǔ)數(shù)據(jù),管理數(shù)據(jù)的方式,比如數(shù)組存數(shù)據(jù),我們可以通過循環(huán)一次性處理數(shù)組里的數(shù)據(jù),這就是數(shù)據(jù)結(jié)構(gòu)!
第二:學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)能讓我們具有一些解決復(fù)雜問題的能力,通常復(fù)雜的問題數(shù)據(jù)量都很大,那么管理數(shù)據(jù)成了難題,故學(xué)習(xí)了數(shù)據(jù)結(jié)構(gòu)就可以又快又方便的管理數(shù)據(jù)。
第三:算法就是定義良好的計(jì)算過程,通俗點(diǎn)講就是一系列的計(jì)算步驟,通過優(yōu)質(zhì)的算法快速的解決過程,再用優(yōu)質(zhì)的數(shù)據(jù)結(jié)構(gòu)快速管理數(shù)據(jù),那么在難的題都如同庖丁解牛,迎刃而解!
3>>復(fù)雜度的概念
? ? ? ? 一般衡量一個(gè)算法的好壞,一般是從時(shí)間和空間兩個(gè)維度來衡量的,(插閑話:小編愛看玄幻小說,很多主角技能厲害的也跟時(shí)間空間相關(guān),所以小編在想,如果我們算法可以一直往高處學(xué),沒有上界,那么我們能不能通過代碼突破時(shí)空從而升維,哈哈哈這只是一個(gè)想法,要實(shí)現(xiàn)那肯定務(wù)必要學(xué)精算法!小編會(huì)努力的!)也就是時(shí)間復(fù)雜度和空間復(fù)雜度!
時(shí)間復(fù)雜度是衡量一個(gè)算法運(yùn)行的快慢
空間復(fù)雜度是衡量一個(gè)算法運(yùn)行所需要的額外空間
不過現(xiàn)在一般不怎么看空間復(fù)雜度,因?yàn)槲覀儸F(xiàn)在不管是電腦還是手機(jī),內(nèi)存和外存(硬盤)都很大了。但是我們還是要學(xué),接下來我們一起來看看:
4>>時(shí)間復(fù)雜度
? ? ? ? 時(shí)間復(fù)雜度是一個(gè)函數(shù)式子T(N),它描述了該算法的運(yùn)行時(shí)間,肯定有人跟我有一樣的疑問,為什么不直接計(jì)算程序運(yùn)行時(shí)間呢?首先,編譯器的新舊程度會(huì)影響運(yùn)算的快慢,其次,處理器的好壞也會(huì)影響運(yùn)算的快慢(跟你打游戲卡不卡一個(gè)道理),再者,我們只有寫完程序才能知道運(yùn)行時(shí)間。因此:不能直接計(jì)算,引入T(N)概念:
? ? ? ??T(N)是計(jì)算了程序的運(yùn)行次數(shù)。我們?cè)谶@里要進(jìn)行抽象的概念,假設(shè)每條語(yǔ)句的執(zhí)行時(shí)間是一樣的,不管你是a=1還是a=10000000^1000等等,都基本一樣(實(shí)際有一內(nèi)內(nèi)區(qū)別),那么我們能知道你運(yùn)行次數(shù)越多,那么運(yùn)行時(shí)間越大。那么同樣一題,答案運(yùn)行次數(shù)少的算法一定是比運(yùn)行次數(shù)多的算法來的好的。
這個(gè)代碼它的時(shí)間復(fù)雜度T(N)=N;
5>>大O漸進(jìn)表示法
? ? ? ? 有三條規(guī)則分別是:
1.時(shí)間復(fù)雜度T(N)中要抓大頭,什么意思呢?也就是保留高階項(xiàng),去掉低階項(xiàng),如果T(N)=N^2+N+234那么O(N)=N^2
2.高階項(xiàng)常數(shù)系數(shù)忽略不計(jì),如果T(N)=12312N^2+N+234那么還是O(N)=N^2,為什么呢?很多同學(xué)在這有疑問,因?yàn)楫?dāng)N無窮大時(shí),它的常數(shù)系數(shù)多少乘它都顯得蒼白無力。
3.若T(N)中只有常數(shù)項(xiàng),那么用常數(shù)1取代,如果T(N)=123121212312,那么O(N)=1,這里不管常數(shù)多大,結(jié)果都是1。
來看一道例題:
這里每調(diào)用一次函數(shù),運(yùn)行次數(shù)就加1,那么根據(jù)圖片我們能看出它是N!執(zhí)行次數(shù)就是N次,所以O(shè)(N)就等于1;
通常我們說的時(shí)間復(fù)雜度都是使用O(N)而不是T(N)
6>>總結(jié)
? ? ? ? 今天小編就學(xué)了這么多,總結(jié)一下就是了解了數(shù)據(jù)結(jié)構(gòu)以及復(fù)雜度、算法的概念,學(xué)習(xí)了時(shí)間復(fù)雜度T(N)的計(jì)算方法,以及O(N)表示法,希望看這篇文章的同學(xué)都能夠有所收獲,小編在這里謝謝大家的耐心觀看,一起進(jìn)步,一起加油!
柚子快報(bào)邀請(qǐng)碼778899分享:博主回歸!數(shù)據(jù)結(jié)構(gòu)篇啟動(dòng)
好文推薦
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。