SlideShare a Scribd company logo
AAllggoorriitthhmmss CCoommpplleexxiittyy aanndd 
DDaattaa SSttrruuccttuurreess EEffffiicciieennccyy 
CCoommppuuttaattiioonnaall CCoommpplleexxiittyy,, CChhoooossiinngg DDaattaa SSttrruuccttuurreess 
SSvveettlliinn NNaakkoovv 
TTeelleerriikk CCoorrppoorraattiioonn 
wwwwww..tteelleerriikk..ccoomm
TTaabbllee ooff CCoonntteennttss 
11.. AAllggoorriitthhmmss CCoommpplleexxiittyy aanndd AAssyymmppttoottiicc 
NNoottaattiioonn 
 TTiimmee aanndd MMeemmoorryy CCoommpplleexxiittyy 
 MMeeaann,, AAvveerraaggee aanndd WWoorrsstt CCaassee 
11.. FFuunnddaammeennttaall DDaattaa SSttrruuccttuurreess –– CCoommppaarriissoonn 
 AArrrraayyss vvss.. LLiissttss vvss.. TTrreeeess vvss.. HHaasshh--TTaabblleess 
11.. CChhoooossiinngg PPrrooppeerr DDaattaa SSttrruuccttuurree 
2
WWhhyy DDaattaa SSttrruuccttuurreess aarree 
IImmppoorrttaanntt?? 
DDaattaa ssttrruuccttuurreess aanndd aallggoorriitthhmmss aarree tthhee 
ffoouunnddaattiioonn ooff ccoommppuutteerr pprrooggrraammmmiinngg 
AAllggoorriitthhmmiicc tthhiinnkkiinngg,, pprroobblleemm ssoollvviinngg aanndd 
ddaattaa ssttrruuccttuurreess aarree vviittaall ffoorr ssooffttwwaarree eennggiinneeeerrss 
AAllll ..NNEETT ddeevveellooppeerrss sshhoouulldd kknnooww wwhheenn ttoo uussee 
TT[[]],, LLiinnkkeeddLLiisstt<<TT>>,, LLiisstt<<TT>>,, SSttaacckk<<TT>>,, 
QQuueeuuee<<TT>>,, DDiiccttiioonnaarryy<<KK,,TT>>,, HHaasshhSSeett<<TT>>,, 
SSoorrtteeddDDiiccttiioonnaarryy<<KK,,TT>> aanndd SSoorrtteeddSSeett<<TT>> 
 CCoommppuuttaattiioonnaall ccoommpplleexxiittyy iiss iimmppoorrttaanntt ffoorr 
aallggoorriitthhmm ddeessiiggnn aanndd eeffffiicciieenntt pprrooggrraammmmiinngg 
3
AAllggoorriitthhmmss CCoommpplleexxiittyy 
AAssyymmttoottiicc NNoottaattiioonn
AAllggoorriitthhmm AAnnaallyyssiiss 
WWhhyy wwee sshhoouulldd aannaallyyzzee aallggoorriitthhmmss?? 
PPrreeddiicctt tthhee rreessoouurrcceess tthhaatt tthhee aallggoorriitthhmm 
rreeqquuiirreess 
CCoommppuuttaattiioonnaall ttiimmee ((CCPPUU ccoonnssuummppttiioonn)) 
MMeemmoorryy ssppaaccee ((RRAAMM ccoonnssuummppttiioonn)) 
CCoommmmuunniiccaattiioonn bbaannddwwiiddtthh ccoonnssuummppttiioonn 
TThhee rruunnnniinngg ttiimmee ooff aann aallggoorriitthhmm iiss:: 
TThhee ttoottaall nnuummbbeerr ooff pprriimmiittiivvee ooppeerraattiioonnss 
eexxeeccuutteedd ((mmaacchhiinnee iinnddeeppeennddeenntt sstteeppss)) 
AAllssoo kknnoowwnn aass aallggoorriitthhmm ccoommpplleexxiittyy 
5
AAllggoorriitthhmmiicc CCoommpplleexxiittyy 
WWhhaatt ttoo mmeeaassuurree?? 
MMeemmoorryy 
TTiimmee 
NNuummbbeerr ooff sstteeppss 
NNuummbbeerr ooff ppaarrttiiccuullaarr ooppeerraattiioonnss 
NNuummbbeerr ooff ddiisskk ooppeerraattiioonnss 
NNuummbbeerr ooff nneettwwoorrkk ppaacckkeettss 
AAssyymmppttoottiicc ccoommpplleexxiittyy 
6
TTiimmee CCoommpplleexxiittyy 
WWoorrsstt--ccaassee 
AAnn uuppppeerr bboouunndd oonn tthhee rruunnnniinngg ttiimmee ffoorr aannyy 
iinnppuutt ooff ggiivveenn ssiizzee 
AAvveerraaggee--ccaassee 
AAssssuummee aallll iinnppuuttss ooff aa ggiivveenn ssiizzee aarree eeqquuaallllyy 
lliikkeellyy 
 BBeesstt--ccaassee 
TThhee lloowweerr bboouunndd oonn tthhee rruunnnniinngg ttiimmee 
7
TTiimmee CCoommpplleexxiittyy –– EExxaammppllee 
 SSeeqquueennttiiaall sseeaarrcchh iinn aa lliisstt ooff ssiizzee nn 
WWoorrsstt--ccaassee:: 
nn ccoommppaarriissoonnss 
BBeesstt--ccaassee:: 
11 ccoommppaarriissoonn 
AAvveerraaggee--ccaassee:: 
nn//22 ccoommppaarriissoonnss 
…… …… …… …… …… …… …… 
 TThhee aallggoorriitthhmm rruunnss iinn lliinneeaarr ttiimmee 
LLiinneeaarr nnuummbbeerr ooff ooppeerraattiioonnss 
nn 
8
AAllggoorriitthhmmss CCoommpplleexxiittyy 
 AAllggoorriitthhmm ccoommpplleexxiittyy iiss rroouugghh eessttiimmaattiioonn ooff tthhee 
nnuummbbeerr ooff sstteeppss ppeerrffoorrmmeedd bbyy ggiivveenn ccoommppuuttaattiioonn 
ddeeppeennddiinngg oonn tthhee ssiizzee ooff tthhee iinnppuutt ddaattaa 
MMeeaassuurreedd tthhrroouugghh aassyymmppttoottiicc nnoottaattiioonn 
 OO((gg)) wwhheerree gg iiss aa ffuunnccttiioonn ooff tthhee iinnppuutt ddaattaa ssiizzee 
EExxaammpplleess:: 
LLiinneeaarr ccoommpplleexxiittyy OO((nn)) –– aallll eelleemmeennttss aarree 
pprroocceesssseedd oonnccee ((oorr ccoonnssttaanntt nnuummbbeerr ooff ttiimmeess)) 
QQuuaaddrraattiicc ccoommpplleexxiittyy OO((nn22)) –– eeaacchh ooff tthhee 
eelleemmeennttss iiss pprroocceesssseedd nn ttiimmeess 
9
AAssyymmppttoottiicc NNoottaattiioonn:: DDeeffiinniittiioonn 
 AAssyymmppttoottiicc uuppppeerr bboouunndd 
OO--nnoottaattiioonn ((BBiigg OO nnoottaattiioonn)) 
 FFoorr ggiivveenn ffuunnccttiioonn gg((nn)),, wwee ddeennoottee bbyy OO((gg((nn)))) 
tthhee sseett ooff ffuunnccttiioonnss tthhaatt aarree ddiiffffeerreenntt tthhaann gg((nn)) 
bbyy aa ccoonnssttaanntt 
OO((gg((nn)))) == {{ff((nn)):: tthheerree eexxiisstt ppoossiittiivvee ccoonnssttaannttss cc 
aanndd nn00 ssuucchh tthhaatt ff((nn)) <<== cc**gg((nn)) ffoorr aallll nn >>== nn00}} 
 EExxaammpplleess:: 
33 ** nn22 ++ nn//22 ++ 1122 ∈∈ OO((nn22)) 
44**nn**lloogg22((33**nn++11)) ++ 22**nn--11 ∈∈ OO((nn ** lloogg nn)) 
10
TTyyppiiccaall CCoommpplleexxiittiieess 
11 
CCoommpplleexxiittyy NNoottaattiioonn DDeessccrriippttiioonn 
ccoonnssttaanntt OO((11)) 
CCoonnssttaanntt nnuummbbeerr ooff 
ooppeerraattiioonnss,, nnoott ddeeppeennddiinngg oonn 
tthhee iinnppuutt ddaattaa ssiizzee,, ee..gg.. 
nn == 11 000000 000000  11--22 
ooppeerraattiioonnss 
llooggaarriitthhmmiicc OO((lloogg nn)) 
NNuummbbeerr ooff ooppeerraattiioonnss pprrooppoorr-- 
ttiioonnaall ooff lloogg22((nn)) wwhheerree nn iiss tthhee 
ssiizzee ooff tthhee iinnppuutt ddaattaa,, ee..gg.. nn == 
11 000000 000000 000000  3300 ooppeerraattiioonnss 
lliinneeaarr OO((nn)) 
NNuummbbeerr ooff ooppeerraattiioonnss 
pprrooppoorrttiioonnaall ttoo tthhee iinnppuutt ddaattaa 
ssiizzee,, ee..gg.. nn == 1100 000000  55 000000 
ooppeerraattiioonnss
TTyyppiiccaall CCoommpplleexxiittiieess ((22)) 
12 
CCoommpplleexxiittyy NNoottaattiioonn DDeessccrriippttiioonn 
qquuaaddrraattiicc OO((nn22)) 
NNuummbbeerr ooff ooppeerraattiioonnss 
pprrooppoorrttiioonnaall ttoo tthhee ssqquuaarree ooff 
tthhee ssiizzee ooff tthhee iinnppuutt ddaattaa,, ee..gg.. 
nn == 550000  225500 000000 ooppeerraattiioonnss 
ccuubbiicc OO((nn33)) 
NNuummbbeerr ooff ooppeerraattiioonnss pprrooppoorr-- 
ttiioonnaall ttoo tthhee ccuubbee ooff tthhee ssiizzee 
ooff tthhee iinnppuutt ddaattaa,, ee..gg.. nn == 
220000  88 000000 000000 ooppeerraattiioonnss 
eexxppoonneennttiiaall 
OO((22nn)),, 
OO((kknn)),, 
OO((nn!!)) 
EExxppoonneennttiiaall nnuummbbeerr ooff 
ooppeerraattiioonnss,, ffaasstt ggrroowwiinngg,, ee..gg.. 
nn == 2200  11 004488 557766 ooppeerraattiioonnss
TTiimmee CCoommpplleexxiittyy aanndd SSppeeeedd 
13 
CCoommpplleexxiittyy 1100 2200 5500 110000 11 000000 1100 000000 110000 000000 
OO((11)) << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss 
OO((lloogg((nn)))) << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss 
OO((nn)) << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss 
OO((nn**lloogg((nn)))) << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss 
OO((nn22)) << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss 22 ss 33--44 mmiinn 
OO((nn33)) << 11 ss << 11 ss << 11 ss << 11 ss 2200 ss 55 hhoouurrss 223311 ddaayyss 
OO((22nn)) << 11 ss << 11 ss 226600 
ddaayyss hhaannggss hhaannggss hhaannggss hhaannggss 
OO((nn!!)) << 11 ss hhaannggss hhaannggss hhaannggss hhaannggss hhaannggss hhaannggss 
OO((nnnn)) 33--44 mmiinn hhaannggss hhaannggss hhaannggss hhaannggss hhaannggss hhaannggss
TTiimmee aanndd MMeemmoorryy CCoommpplleexxiittyy 
 CCoommpplleexxiittyy ccaann bbee eexxpprreesssseedd aass ffoorrmmuullaa oonn 
mmuullttiippllee vvaarriiaabblleess,, ee..gg.. 
AAllggoorriitthhmm ffiilllliinngg aa mmaattrriixx ooff ssiizzee nn ** mm wwiitthh nnaattuurraall 
nnuummbbeerrss 11,, 22,, …… wwiillll rruunn iinn OO((nn**mm)) 
DDFFSS ttrraavveerrssaall ooff ggrraapphh wwiitthh nn vveerrttiicceess aanndd mm eeddggeess 
wwiillll rruunn iinn OO((nn ++ mm)) 
MMeemmoorryy ccoonnssuummppttiioonn sshhoouulldd aallssoo bbee ccoonnssiiddeerreedd,, 
ffoorr eexxaammppllee:: 
RRuunnnniinngg ttiimmee OO((nn)),, mmeemmoorryy rreeqquuiirreemmeenntt OO((nn22)) 
nn == 5500 000000  OOuuttOOffMMeemmoorryyEExxcceeppttiioonn 
14
PPoollyynnoommiiaall AAllggoorriitthhmmss 
AA ppoollyynnoommiiaall--ttiimmee aallggoorriitthhmm iiss oonnee wwhhoossee 
wwoorrsstt--ccaassee ttiimmee ccoommpplleexxiittyy iiss bboouunnddeedd aabboovvee 
bbyy aa ppoollyynnoommiiaall ffuunnccttiioonn ooff iittss iinnppuutt ssiizzee 
WW((nn)) ∈ OO((pp((nn)))) 
 EExxaammppllee ooff wwoorrsstt--ccaassee ttiimmee ccoommpplleexxiittyy 
PPoollyynnoommiiaall--ttiimmee:: lloogg nn,, 22nn,, 33nn33 ++ 44nn,, 22 ** nn lloogg nn 
NNoonn ppoollyynnoommiiaall--ttiimmee :: 22nn,, 33nn,, nnkk,, nn!! 
NNoonn--ppoollyynnoommiiaall aallggoorriitthhmmss ddoonn''tt wwoorrkk ffoorr 
llaarrggee iinnppuutt ddaattaa sseettss 
15
AAnnaallyyzziinngg CCoommpplleexxiittyy 
ooff AAllggoorriitthhmmss 
EExxaammpplleess
CCoommpplleexxiittyy EExxaammpplleess 
iinntt FFiinnddMMaaxxEElleemmeenntt((iinntt[[]] aarrrraayy)) 
{{ 
iinntt mmaaxx == aarrrraayy[[00]];; 
ffoorr ((iinntt ii==00;; ii<<aarrrraayy..lleennggtthh;; ii++++)) 
{{ 
iiff ((aarrrraayy[[ii]] >> mmaaxx)) 
{{ 
mmaaxx == aarrrraayy[[ii]];; 
}} 
}} 
rreettuurrnn mmaaxx;; 
}} 
RRuunnss iinn OO((nn)) wwhheerree nn iiss tthhee ssiizzee ooff tthhee aarrrraayy 
 TThhee nnuummbbeerr ooff eelleemmeennttaarryy sstteeppss iiss ~~ nn
CCoommpplleexxiittyy EExxaammpplleess ((22)) 
lloonngg FFiinnddIInnvveerrssiioonnss((iinntt[[]] aarrrraayy)) 
{{ 
lloonngg iinnvveerrssiioonnss == 00;; 
ffoorr ((iinntt ii==00;; ii<<aarrrraayy..LLeennggtthh;; ii++++)) 
ffoorr ((iinntt jj == ii++11;; jj<<aarrrraayy..LLeennggtthh;; ii++++)) 
iiff ((aarrrraayy[[ii]] >> aarrrraayy[[jj]])) 
iinnvveerrssiioonnss++++;; 
rreettuurrnn iinnvveerrssiioonnss;; 
}} 
RRuunnss iinn OO((nn22)) wwhheerree nn iiss tthhee ssiizzee ooff tthhee aarrrraayy 
 TThhee nnuummbbeerr ooff eelleemmeennttaarryy sstteeppss iiss 
~~ nn**((nn++11)) // 22
CCoommpplleexxiittyy EExxaammpplleess ((33)) 
ddeecciimmaall SSuumm33((iinntt nn)) 
{{ 
ddeecciimmaall ssuumm == 00;; 
ffoorr ((iinntt aa==00;; aa<<nn;; aa++++)) 
ffoorr ((iinntt bb==00;; bb<<nn;; bb++++)) 
ffoorr ((iinntt cc==00;; cc<<nn;; cc++++)) 
ssuumm ++== aa**bb**cc;; 
rreettuurrnn ssuumm;; 
}} 
RRuunnss iinn ccuubbiicc ttiimmee OO((nn33)) 
 TThhee nnuummbbeerr ooff eelleemmeennttaarryy sstteeppss iiss ~~ nn33
CCoommpplleexxiittyy EExxaammpplleess ((44)) 
lloonngg SSuummMMNN((iinntt nn,, iinntt mm)) 
{{ 
lloonngg ssuumm == 00;; 
ffoorr ((iinntt xx==00;; xx<<nn;; xx++++)) 
ffoorr ((iinntt yy==00;; yy<<mm;; yy++++)) 
ssuumm ++== xx**yy;; 
rreettuurrnn ssuumm;; 
}} 
RRuunnss iinn qquuaaddrraattiicc ttiimmee OO((nn**mm)) 
 TThhee nnuummbbeerr ooff eelleemmeennttaarryy sstteeppss iiss ~~ nn**mm
CCoommpplleexxiittyy EExxaammpplleess ((55)) 
lloonngg SSuummMMNN((iinntt nn,, iinntt mm)) 
{{ 
lloonngg ssuumm == 00;; 
ffoorr ((iinntt xx==00;; xx<<nn;; xx++++)) 
ffoorr ((iinntt yy==00;; yy<<mm;; yy++++)) 
iiff ((xx====yy)) 
ffoorr ((iinntt ii==00;; ii<<nn;; ii++++)) 
ssuumm ++== ii**xx**yy;; 
rreettuurrnn ssuumm;; 
}} 
RRuunnss iinn qquuaaddrraattiicc ttiimmee OO((nn**mm)) 
 TThhee nnuummbbeerr ooff eelleemmeennttaarryy sstteeppss iiss 
~~ nn**mm ++ mmiinn((mm,,nn))**nn
CCoommpplleexxiittyy EExxaammpplleess ((66)) 
ddeecciimmaall CCaallccuullaattiioonn((iinntt nn)) 
{{ 
ddeecciimmaall rreessuulltt == 00;; 
ffoorr ((iinntt ii == 00;; ii << ((11<<<<nn));; ii++++)) 
rreessuulltt ++== ii;; 
rreettuurrnn rreessuulltt;; 
}} 
RRuunnss iinn eexxppoonneennttiiaall ttiimmee OO((22nn)) 
 TThhee nnuummbbeerr ooff eelleemmeennttaarryy sstteeppss iiss ~~ 22nn
CCoommpplleexxiittyy EExxaammpplleess ((77)) 
ddeecciimmaall FFaaccttoorriiaall((iinntt nn)) 
{{ 
iiff ((nn====00)) 
rreettuurrnn 11;; 
eellssee 
rreettuurrnn nn ** FFaaccttoorriiaall((nn--11));; 
}} 
RRuunnss iinn lliinneeaarr ttiimmee OO((nn)) 
 TThhee nnuummbbeerr ooff eelleemmeennttaarryy sstteeppss iiss ~~ nn
CCoommpplleexxiittyy EExxaammpplleess ((88)) 
ddeecciimmaall FFiibboonnaaccccii((iinntt nn)) 
{{ 
iiff ((nn ==== 00)) 
rreettuurrnn 11;; 
eellssee iiff ((nn ==== 11)) 
rreettuurrnn 11;; 
eellssee 
rreettuurrnn FFiibboonnaaccccii((nn--11)) ++ FFiibboonnaaccccii((nn--22));; 
}} 
RRuunnss iinn eexxppoonneennttiiaall ttiimmee OO((22nn)) 
 TThhee nnuummbbeerr ooff eelleemmeennttaarryy sstteeppss iiss 
~~ FFiibb((nn++11)) wwhheerree FFiibb((kk)) iiss tthhee kk--tthh 
FFiibboonnaaccccii''ss nnuummbbeerr
CCoommppaarriinngg DDaattaa SSttrruuccttuurreess 
EExxaammpplleess
DDaattaa SSttrruuccttuurreess EEffffiicciieennccyy 
26 
DDaattaa SSttrruuccttuurree AAdddd FFiinndd DDeelleettee by- Get-by-iinnddeexx 
AArrrraayy ((TT[[]])) OO((nn)) OO((nn)) OO((nn)) OO((11)) 
LLiinnkkeedd lliisstt 
((LLiinnkkeeddLLiisstt<<TT>>)) O(1) OO((nn)) OO((nn)) OO((nn)) 
RReessiizzaabbllee aarrrraayy lliisstt 
((LLiisstt<<TT>>)) O(1) OO((nn)) OO((nn)) OO((11)) 
SSttaacckk ((SSttaacckk<<TT>>)) OO((11)) -- OO((11)) -- 
QQuueeuuee ((QQuueeuuee<<TT>>)) OO((11)) -- OO((11)) --
DDaattaa SSttrruuccttuurreess EEffffiicciieennccyy ((22)) 
27 
DDaattaa SSttrruuccttuurree AAdddd FFiinndd DDeelleettee by- Get-by-iinnddeexx 
HHaasshh ttaabbllee 
((DDiiccttiioonnaarryy<<KK,,TT>>)) O(1) OO((11)) OO((11)) -- 
TTrreeee--bbaasseedd 
ddiiccttiioonnaarryy ((SSoorrtteedd 
DDiiccttiioonnaarryy<<KK,,TT>>)) 
OO((lloogg nn)) OO((lloogg nn)) OO((lloogg nn)) -- 
HHaasshh ttaabbllee bbaasseedd 
sseett ((HHaasshhSSeett<<TT>>)) O(1) OO((11)) OO((11)) -- 
TTrreeee bbaasseedd sseett 
((SSoorrtteeddSSeett<<TT>>)) O(log nn)) OO((lloogg nn)) OO((lloogg nn)) --
CChhoooossiinngg DDaattaa SSttrruuccttuurree 
AArrrraayyss ((TT[[]])) 
UUssee wwhheenn ffiixxeedd nnuummbbeerr ooff eelleemmeennttss sshhoouulldd bbee 
pprroocceesssseedd bbyy iinnddeexx 
RReessiizzaabbllee aarrrraayy lliissttss ((LLiisstt<<TT>>)) 
UUssee wwhheenn eelleemmeennttss sshhoouulldd bbee aaddddeedd aanndd 
pprroocceesssseedd bbyy iinnddeexx 
 LLiinnkkeedd lliissttss ((LLiinnkkeeddLLiisstt<<TT>>)) 
UUssee wwhheenn eelleemmeennttss sshhoouulldd bbee aaddddeedd aatt tthhee 
bbootthh ssiiddeess ooff tthhee lliisstt 
OOtthheerrwwiissee uussee rreessiizzaabbllee aarrrraayy lliisstt ((LLiisstt<<TT>>)) 
28
CChhoooossiinngg DDaattaa SSttrruuccttuurree ((22)) 
 SSttaacckkss ((SSttaacckk<<TT>>)) 
UUssee ttoo iimmpplleemmeenntt LLIIFFOO ((llaasstt--iinn--ffiirrsstt--oouutt)) bbeehhaavviioorr 
LLiisstt<<TT>> ccoouulldd aallssoo wwoorrkk wweellll 
 QQuueeuueess ((QQuueeuuee<<TT>>)) 
UUssee ttoo iimmpplleemmeenntt FFIIFFOO ((ffiirrsstt--iinn--ffiirrsstt--oouutt)) bbeehhaavviioorr 
LLiinnkkeeddLLiisstt<<TT>> ccoouulldd aallssoo wwoorrkk wweellll 
 HHaasshh ttaabbllee bbaasseedd ddiiccttiioonnaarryy ((DDiiccttiioonnaarryy<<KK,,TT>>)) 
UUssee wwhheenn kkeeyy--vvaalluuee ppaaiirrss sshhoouulldd bbee aaddddeedd ffaasstt aanndd 
sseeaarrcchheedd ffaasstt bbyy kkeeyy 
EElleemmeennttss iinn aa hhaasshh ttaabbllee hhaavvee nnoo ppaarrttiiccuullaarr oorrddeerr 
29
CChhoooossiinngg DDaattaa SSttrruuccttuurree ((33)) 
 BBaallaanncceedd sseeaarrcchh ttrreeee bbaasseedd ddiiccttiioonnaarryy 
((SSoorrtteeddDDiiccttiioonnaarryy<<KK,,TT>>)) 
UUssee wwhheenn kkeeyy--vvaalluuee ppaaiirrss sshhoouulldd bbee aaddddeedd ffaasstt,, 
sseeaarrcchheedd ffaasstt bbyy kkeeyy aanndd eennuummeerraatteedd ssoorrtteedd bbyy kkeeyy 
HHaasshh ttaabbllee bbaasseedd sseett ((HHaasshhSSeett<<TT>>)) 
UUssee ttoo kkeeeepp aa ggrroouupp ooff uunniiqquuee vvaalluueess,, ttoo aadddd 
aanndd cchheecckk bbeelloonnggiinngg ttoo tthhee sseett ffaasstt 
EElleemmeennttss aarree iinn nnoo ppaarrttiiccuullaarr oorrddeerr 
 SSeeaarrcchh ttrreeee bbaasseedd sseett ((SSoorrtteeddSSeett<<TT>>)) 
UUssee ttoo kkeeeepp aa ggrroouupp ooff oorrddeerreedd uunniiqquuee vvaalluueess 
30
SSuummmmaarryy 
 AAllggoorriitthhmm ccoommpplleexxiittyy iiss rroouugghh eessttiimmaattiioonn ooff tthhee 
nnuummbbeerr ooff sstteeppss ppeerrffoorrmmeedd bbyy ggiivveenn ccoommppuuttaattiioonn 
CCoommpplleexxiittyy ccaann bbee llooggaarriitthhmmiicc,, lliinneeaarr,, nn lloogg nn,, 
ssqquuaarree,, ccuubbiicc,, eexxppoonneennttiiaall,, eettcc.. 
AAlllloowwss ttoo eessttiimmaattiinngg tthhee ssppeeeedd ooff ggiivveenn ccooddee 
bbeeffoorree iittss eexxeeccuuttiioonn 
DDiiffffeerreenntt ddaattaa ssttrruuccttuurreess hhaavvee ddiiffffeerreenntt 
eeffffiicciieennccyy oonn ddiiffffeerreenntt ooppeerraattiioonnss 
TThhee ffaasstteesstt aadddd // ffiinndd // ddeelleettee ssttrruuccttuurree iiss tthhee 
hhaasshh ttaabbllee –– OO((11)) ffoorr aallll tthheessee ooppeerraattiioonnss 
31
AAllggoorriitthhmmss CCoommpplleexxiittyy aanndd 
DDaattaa SSttrruuccttuurreess EEffffiicciieennccyy 
QQuueessttiioonnss?? 
http://academy.telerik.com
EExxeerrcciisseess 
11.. AA tteexxtt ffiillee ssttuuddeennttss..ttxxtt hhoollddss iinnffoorrmmaattiioonn aabboouutt 
ssttuuddeennttss aanndd tthheeiirr ccoouurrsseess iinn tthhee ffoolllloowwiinngg ffoorrmmaatt:: 
UUssiinngg SSoorrtteeddDDiiccttiioonnaarryy<<KK,,TT>> pprriinntt tthhee ccoouurrsseess iinn 
aallpphhaabbeettiiccaall oorrddeerr aanndd ffoorr eeaacchh ooff tthheemm pprriinnttss tthhee 
ssttuuddeennttss oorrddeerreedd bbyy ffaammiillyy aanndd tthheenn bbyy nnaammee:: 
33 
KKiirriill || IIvvaannoovv || CC## 
SStteeffkkaa || NNiikkoolloovvaa || SSQQLL 
SStteellaa || MMiinneevvaa || JJaavvaa 
MMiilleennaa || PPeettrroovvaa || CC## 
IIvvaann || GGrriiggoorroovv || CC## 
IIvvaann || KKoolleevv || SSQQLL 
CC##:: IIvvaann GGrriiggoorroovv,, KKiirriill IIvvaannoovv,, MMiilleennaa PPeettrroovvaa 
JJaavvaa:: SStteellaa MMiinneevvaa 
SSQQLL:: IIvvaann KKoolleevv,, SStteeffkkaa NNiikkoolloovvaa
EExxeerrcciisseess ((22)) 
22.. AA llaarrggee ttrraaddee ccoommppaannyy hhaass mmiilllliioonnss ooff aarrttiicclleess,, eeaacchh 
ddeessccrriibbeedd bbyy bbaarrccooddee,, vveennddoorr,, ttiittllee aanndd pprriiccee.. 
IImmpplleemmeenntt aa ddaattaa ssttrruuccttuurree ttoo ssttoorree tthheemm tthhaatt 
aalllloowwss ffaasstt rreettrriieevvaall ooff aallll aarrttiicclleess iinn ggiivveenn pprriiccee rraannggee 
[[xx……yy]].. HHiinntt:: uussee OOrrddeerreeddMMuullttiiDDiiccttiioonnaarryy<<KK,,TT>> 
ffrroomm WWiinntteelllleecctt''ss PPoowweerr CCoolllleeccttiioonnss ffoorr ..NNEETT.. 
33.. IImmpplleemmeenntt aa ddaattaa ssttrruuccttuurree PPrriioorriittyyQQuueeuuee<<TT>> 
tthhaatt pprroovviiddeess aa ffaasstt wwaayy ttoo eexxeeccuuttee tthhee ffoolllloowwiinngg 
ooppeerraattiioonnss:: aadddd eelleemmeenntt;; eexxttrraacctt tthhee ssmmaalllleesstt eelleemmeenntt.. 
44.. IImmpplleemmeenntt aa ccllaassss BBiiDDiiccttiioonnaarryy<<KK11,,KK2,,TT>> tthhaatt 
aalllloowwss aaddddiinngg ttrriipplleess {{kkeeyy11,, kkeeyy2,, vvaalluuee}} aanndd ffaasstt 
sseeaarrcchh bbyy kkeeyy11,, kkeeyy2 oorr bbyy bbootthh kkeeyy11 aanndd kkeeyy2.. 
NNoottee:: mmuullttiippllee vvaalluueess ccaann bbee ssttoorreedd ffoorr ggiivveenn kkeeyy.. 
34
EExxeerrcciisseess ((33)) 
55.. AA tteexxtt ffiillee pphhoonneess..ttxxtt hhoollddss iinnffoorrmmaattiioonn aabboouutt 
ppeeooppllee,, tthheeiirr ttoowwnn aanndd pphhoonnee nnuummbbeerr:: 
DDuupplliiccaatteess ccaann ooccccuurr iinn ppeeooppllee nnaammeess,, ttoowwnnss aanndd 
pphhoonnee nnuummbbeerrss.. WWrriittee aa pprrooggrraamm ttoo eexxeeccuuttee aa 
sseeqquueennccee ooff ccoommmmaannddss ffrroomm aa ffiillee ccoommmmaannddss..ttxxtt:: 
 ffiinndd((nnaammee)) –– ddiissppllaayy aallll mmaattcchhiinngg rreeccoorrddss bbyy ggiivveenn 
nnaammee ((ffiirrsstt,, mmiiddddllee,, llaasstt oorr nniicckknnaammee)) 
 ffiinndd((nnaammee,, ttoowwnn)) –– ddiissppllaayy aallll mmaattcchhiinngg rreeccoorrddss bbyy 
ggiivveenn nnaammee aanndd ttoowwnn 
35 
MMiimmii SShhmmaattkkaattaa || PPlloovvddiivv || 00888888 112 3344 5566 
KKiirreettoo || VVaarrnnaa || 00552 233 4455 6677 
DDaanniieellaa IIvvaannoovvaa PPeettrroovvaa || KKaarrnnoobbaatt || 00889999 999999 888888 
BBaatt GGaanncchhoo || SSooffiiaa || 002 994466 994466 994466

More Related Content

PPT
18 Hash tables and sets
PPT
Osteo osteomalacia ricket2
PPT
Globally harmonized system (ghs) classification and labeling
PDF
Rajeev Sharma Resume 2017
PPT
Chapter 6 testbench
PPT
The complement system
PPT
CS201- Introduction to Programming- Lecture 10
PPT
Ra lecture - muscles of the face
18 Hash tables and sets
Osteo osteomalacia ricket2
Globally harmonized system (ghs) classification and labeling
Rajeev Sharma Resume 2017
Chapter 6 testbench
The complement system
CS201- Introduction to Programming- Lecture 10
Ra lecture - muscles of the face

What's hot (20)

PPT
21 High-quality programming code construction part-ii
PDF
Cursos Polilab - Degradação e estabilização de polímeros aula 02
PPS
semesta
PPT
Safe laparoscopy
PPT
GastritisZaydoon
PPT
Nguyen kim doanh ta
PPT
Rational zero of polynomial function
PPT
Morphemes
PPT
PPT
Avaliacao de investimentos
PPT
Business plan presentation_format
PPT
10 het eerste licht
PPT
3 komeetbezoek
PPT
The anatomy of a dollar bill
PPT
Fármacos sistema nervioso y epinefrina
PPT
solar activity and climate
PPT
Tiro parabólico
PPT
Upper tibial valgus osteotomy using a dynamic external fixator
PPT
Impression materials review
PPT
Fluid & electrolytes & acid base
21 High-quality programming code construction part-ii
Cursos Polilab - Degradação e estabilização de polímeros aula 02
semesta
Safe laparoscopy
GastritisZaydoon
Nguyen kim doanh ta
Rational zero of polynomial function
Morphemes
Avaliacao de investimentos
Business plan presentation_format
10 het eerste licht
3 komeetbezoek
The anatomy of a dollar bill
Fármacos sistema nervioso y epinefrina
solar activity and climate
Tiro parabólico
Upper tibial valgus osteotomy using a dynamic external fixator
Impression materials review
Fluid & electrolytes & acid base
Ad

Viewers also liked (7)

PPT
05 Conditional statements
PPT
Lecture04
PDF
9. statements (conditional statements)
PPSX
Conditional statement
PPTX
CONDITIONAL STATEMENT IN C LANGUAGE
PDF
Control statements
PPTX
Slideshare ppt
05 Conditional statements
Lecture04
9. statements (conditional statements)
Conditional statement
CONDITIONAL STATEMENT IN C LANGUAGE
Control statements
Slideshare ppt
Ad

Similar to 19 Algorithms and complexity (20)

PPT
Aula 1 (2)
PPT
Symmetry and group theory
PPT
La exploración del sistema solar
PPS
Liver cirrhosis-hematemsis-peptic Ulcer Lecture
PPT
14827 8 a d converter
PPT
Biomech of cerv disk medium
PPT
19 human research 2
PPT
#7 dysbiosis and leaky gut syndrome
PPT
1 pigmentation
PPT
Requerimientos energéticos 2014
PPT
Tumor of the eye lid
PPT
pre-prosthetic surgery
PPT
Political Identity Assignment
PPT
Types of communication
PPT
Rehab for sick_units
PDF
Ambiental resumo - apostila direito ambiental
PPT
Unidad VI. Un ciclo
PPT
1334006 mitali
PPT
Ciivic education 1
PPT
Spinal injuries
Aula 1 (2)
Symmetry and group theory
La exploración del sistema solar
Liver cirrhosis-hematemsis-peptic Ulcer Lecture
14827 8 a d converter
Biomech of cerv disk medium
19 human research 2
#7 dysbiosis and leaky gut syndrome
1 pigmentation
Requerimientos energéticos 2014
Tumor of the eye lid
pre-prosthetic surgery
Political Identity Assignment
Types of communication
Rehab for sick_units
Ambiental resumo - apostila direito ambiental
Unidad VI. Un ciclo
1334006 mitali
Ciivic education 1
Spinal injuries

More from maznabili (20)

PPT
22 Methodology of problem solving
PPT
21 high-quality programming code construction part-i
PPT
20 Object-oriented programming principles
PPT
17 Trees and graphs
PPT
16 Linear data structures
PPT
15 Text files
PPT
14 Defining classes
PPT
13 Strings and text processing
PPT
12 Exceptions handling
PPT
11 Using classes and objects
PPT
10 Recursion
PPT
09 Methods
PPT
08 Numeral systems
PPT
07 Arrays
PPT
06 Loops
PPT
04 Console input output-
PPT
03 Operators and expressions
PPT
02 Primitive data types and variables
PPT
01 Introduction to programming
PPT
00 Fundamentals of csharp course introduction
22 Methodology of problem solving
21 high-quality programming code construction part-i
20 Object-oriented programming principles
17 Trees and graphs
16 Linear data structures
15 Text files
14 Defining classes
13 Strings and text processing
12 Exceptions handling
11 Using classes and objects
10 Recursion
09 Methods
08 Numeral systems
07 Arrays
06 Loops
04 Console input output-
03 Operators and expressions
02 Primitive data types and variables
01 Introduction to programming
00 Fundamentals of csharp course introduction

19 Algorithms and complexity

  • 1. AAllggoorriitthhmmss CCoommpplleexxiittyy aanndd DDaattaa SSttrruuccttuurreess EEffffiicciieennccyy CCoommppuuttaattiioonnaall CCoommpplleexxiittyy,, CChhoooossiinngg DDaattaa SSttrruuccttuurreess SSvveettlliinn NNaakkoovv TTeelleerriikk CCoorrppoorraattiioonn wwwwww..tteelleerriikk..ccoomm
  • 2. TTaabbllee ooff CCoonntteennttss 11.. AAllggoorriitthhmmss CCoommpplleexxiittyy aanndd AAssyymmppttoottiicc NNoottaattiioonn  TTiimmee aanndd MMeemmoorryy CCoommpplleexxiittyy  MMeeaann,, AAvveerraaggee aanndd WWoorrsstt CCaassee 11.. FFuunnddaammeennttaall DDaattaa SSttrruuccttuurreess –– CCoommppaarriissoonn  AArrrraayyss vvss.. LLiissttss vvss.. TTrreeeess vvss.. HHaasshh--TTaabblleess 11.. CChhoooossiinngg PPrrooppeerr DDaattaa SSttrruuccttuurree 2
  • 3. WWhhyy DDaattaa SSttrruuccttuurreess aarree IImmppoorrttaanntt?? DDaattaa ssttrruuccttuurreess aanndd aallggoorriitthhmmss aarree tthhee ffoouunnddaattiioonn ooff ccoommppuutteerr pprrooggrraammmmiinngg AAllggoorriitthhmmiicc tthhiinnkkiinngg,, pprroobblleemm ssoollvviinngg aanndd ddaattaa ssttrruuccttuurreess aarree vviittaall ffoorr ssooffttwwaarree eennggiinneeeerrss AAllll ..NNEETT ddeevveellooppeerrss sshhoouulldd kknnooww wwhheenn ttoo uussee TT[[]],, LLiinnkkeeddLLiisstt<<TT>>,, LLiisstt<<TT>>,, SSttaacckk<<TT>>,, QQuueeuuee<<TT>>,, DDiiccttiioonnaarryy<<KK,,TT>>,, HHaasshhSSeett<<TT>>,, SSoorrtteeddDDiiccttiioonnaarryy<<KK,,TT>> aanndd SSoorrtteeddSSeett<<TT>>  CCoommppuuttaattiioonnaall ccoommpplleexxiittyy iiss iimmppoorrttaanntt ffoorr aallggoorriitthhmm ddeessiiggnn aanndd eeffffiicciieenntt pprrooggrraammmmiinngg 3
  • 5. AAllggoorriitthhmm AAnnaallyyssiiss WWhhyy wwee sshhoouulldd aannaallyyzzee aallggoorriitthhmmss?? PPrreeddiicctt tthhee rreessoouurrcceess tthhaatt tthhee aallggoorriitthhmm rreeqquuiirreess CCoommppuuttaattiioonnaall ttiimmee ((CCPPUU ccoonnssuummppttiioonn)) MMeemmoorryy ssppaaccee ((RRAAMM ccoonnssuummppttiioonn)) CCoommmmuunniiccaattiioonn bbaannddwwiiddtthh ccoonnssuummppttiioonn TThhee rruunnnniinngg ttiimmee ooff aann aallggoorriitthhmm iiss:: TThhee ttoottaall nnuummbbeerr ooff pprriimmiittiivvee ooppeerraattiioonnss eexxeeccuutteedd ((mmaacchhiinnee iinnddeeppeennddeenntt sstteeppss)) AAllssoo kknnoowwnn aass aallggoorriitthhmm ccoommpplleexxiittyy 5
  • 6. AAllggoorriitthhmmiicc CCoommpplleexxiittyy WWhhaatt ttoo mmeeaassuurree?? MMeemmoorryy TTiimmee NNuummbbeerr ooff sstteeppss NNuummbbeerr ooff ppaarrttiiccuullaarr ooppeerraattiioonnss NNuummbbeerr ooff ddiisskk ooppeerraattiioonnss NNuummbbeerr ooff nneettwwoorrkk ppaacckkeettss AAssyymmppttoottiicc ccoommpplleexxiittyy 6
  • 7. TTiimmee CCoommpplleexxiittyy WWoorrsstt--ccaassee AAnn uuppppeerr bboouunndd oonn tthhee rruunnnniinngg ttiimmee ffoorr aannyy iinnppuutt ooff ggiivveenn ssiizzee AAvveerraaggee--ccaassee AAssssuummee aallll iinnppuuttss ooff aa ggiivveenn ssiizzee aarree eeqquuaallllyy lliikkeellyy  BBeesstt--ccaassee TThhee lloowweerr bboouunndd oonn tthhee rruunnnniinngg ttiimmee 7
  • 8. TTiimmee CCoommpplleexxiittyy –– EExxaammppllee  SSeeqquueennttiiaall sseeaarrcchh iinn aa lliisstt ooff ssiizzee nn WWoorrsstt--ccaassee:: nn ccoommppaarriissoonnss BBeesstt--ccaassee:: 11 ccoommppaarriissoonn AAvveerraaggee--ccaassee:: nn//22 ccoommppaarriissoonnss …… …… …… …… …… …… ……  TThhee aallggoorriitthhmm rruunnss iinn lliinneeaarr ttiimmee LLiinneeaarr nnuummbbeerr ooff ooppeerraattiioonnss nn 8
  • 9. AAllggoorriitthhmmss CCoommpplleexxiittyy  AAllggoorriitthhmm ccoommpplleexxiittyy iiss rroouugghh eessttiimmaattiioonn ooff tthhee nnuummbbeerr ooff sstteeppss ppeerrffoorrmmeedd bbyy ggiivveenn ccoommppuuttaattiioonn ddeeppeennddiinngg oonn tthhee ssiizzee ooff tthhee iinnppuutt ddaattaa MMeeaassuurreedd tthhrroouugghh aassyymmppttoottiicc nnoottaattiioonn  OO((gg)) wwhheerree gg iiss aa ffuunnccttiioonn ooff tthhee iinnppuutt ddaattaa ssiizzee EExxaammpplleess:: LLiinneeaarr ccoommpplleexxiittyy OO((nn)) –– aallll eelleemmeennttss aarree pprroocceesssseedd oonnccee ((oorr ccoonnssttaanntt nnuummbbeerr ooff ttiimmeess)) QQuuaaddrraattiicc ccoommpplleexxiittyy OO((nn22)) –– eeaacchh ooff tthhee eelleemmeennttss iiss pprroocceesssseedd nn ttiimmeess 9
  • 10. AAssyymmppttoottiicc NNoottaattiioonn:: DDeeffiinniittiioonn  AAssyymmppttoottiicc uuppppeerr bboouunndd OO--nnoottaattiioonn ((BBiigg OO nnoottaattiioonn))  FFoorr ggiivveenn ffuunnccttiioonn gg((nn)),, wwee ddeennoottee bbyy OO((gg((nn)))) tthhee sseett ooff ffuunnccttiioonnss tthhaatt aarree ddiiffffeerreenntt tthhaann gg((nn)) bbyy aa ccoonnssttaanntt OO((gg((nn)))) == {{ff((nn)):: tthheerree eexxiisstt ppoossiittiivvee ccoonnssttaannttss cc aanndd nn00 ssuucchh tthhaatt ff((nn)) <<== cc**gg((nn)) ffoorr aallll nn >>== nn00}}  EExxaammpplleess:: 33 ** nn22 ++ nn//22 ++ 1122 ∈∈ OO((nn22)) 44**nn**lloogg22((33**nn++11)) ++ 22**nn--11 ∈∈ OO((nn ** lloogg nn)) 10
  • 11. TTyyppiiccaall CCoommpplleexxiittiieess 11 CCoommpplleexxiittyy NNoottaattiioonn DDeessccrriippttiioonn ccoonnssttaanntt OO((11)) CCoonnssttaanntt nnuummbbeerr ooff ooppeerraattiioonnss,, nnoott ddeeppeennddiinngg oonn tthhee iinnppuutt ddaattaa ssiizzee,, ee..gg.. nn == 11 000000 000000  11--22 ooppeerraattiioonnss llooggaarriitthhmmiicc OO((lloogg nn)) NNuummbbeerr ooff ooppeerraattiioonnss pprrooppoorr-- ttiioonnaall ooff lloogg22((nn)) wwhheerree nn iiss tthhee ssiizzee ooff tthhee iinnppuutt ddaattaa,, ee..gg.. nn == 11 000000 000000 000000  3300 ooppeerraattiioonnss lliinneeaarr OO((nn)) NNuummbbeerr ooff ooppeerraattiioonnss pprrooppoorrttiioonnaall ttoo tthhee iinnppuutt ddaattaa ssiizzee,, ee..gg.. nn == 1100 000000  55 000000 ooppeerraattiioonnss
  • 12. TTyyppiiccaall CCoommpplleexxiittiieess ((22)) 12 CCoommpplleexxiittyy NNoottaattiioonn DDeessccrriippttiioonn qquuaaddrraattiicc OO((nn22)) NNuummbbeerr ooff ooppeerraattiioonnss pprrooppoorrttiioonnaall ttoo tthhee ssqquuaarree ooff tthhee ssiizzee ooff tthhee iinnppuutt ddaattaa,, ee..gg.. nn == 550000  225500 000000 ooppeerraattiioonnss ccuubbiicc OO((nn33)) NNuummbbeerr ooff ooppeerraattiioonnss pprrooppoorr-- ttiioonnaall ttoo tthhee ccuubbee ooff tthhee ssiizzee ooff tthhee iinnppuutt ddaattaa,, ee..gg.. nn == 220000  88 000000 000000 ooppeerraattiioonnss eexxppoonneennttiiaall OO((22nn)),, OO((kknn)),, OO((nn!!)) EExxppoonneennttiiaall nnuummbbeerr ooff ooppeerraattiioonnss,, ffaasstt ggrroowwiinngg,, ee..gg.. nn == 2200  11 004488 557766 ooppeerraattiioonnss
  • 13. TTiimmee CCoommpplleexxiittyy aanndd SSppeeeedd 13 CCoommpplleexxiittyy 1100 2200 5500 110000 11 000000 1100 000000 110000 000000 OO((11)) << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss OO((lloogg((nn)))) << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss OO((nn)) << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss OO((nn**lloogg((nn)))) << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss OO((nn22)) << 11 ss << 11 ss << 11 ss << 11 ss << 11 ss 22 ss 33--44 mmiinn OO((nn33)) << 11 ss << 11 ss << 11 ss << 11 ss 2200 ss 55 hhoouurrss 223311 ddaayyss OO((22nn)) << 11 ss << 11 ss 226600 ddaayyss hhaannggss hhaannggss hhaannggss hhaannggss OO((nn!!)) << 11 ss hhaannggss hhaannggss hhaannggss hhaannggss hhaannggss hhaannggss OO((nnnn)) 33--44 mmiinn hhaannggss hhaannggss hhaannggss hhaannggss hhaannggss hhaannggss
  • 14. TTiimmee aanndd MMeemmoorryy CCoommpplleexxiittyy  CCoommpplleexxiittyy ccaann bbee eexxpprreesssseedd aass ffoorrmmuullaa oonn mmuullttiippllee vvaarriiaabblleess,, ee..gg.. AAllggoorriitthhmm ffiilllliinngg aa mmaattrriixx ooff ssiizzee nn ** mm wwiitthh nnaattuurraall nnuummbbeerrss 11,, 22,, …… wwiillll rruunn iinn OO((nn**mm)) DDFFSS ttrraavveerrssaall ooff ggrraapphh wwiitthh nn vveerrttiicceess aanndd mm eeddggeess wwiillll rruunn iinn OO((nn ++ mm)) MMeemmoorryy ccoonnssuummppttiioonn sshhoouulldd aallssoo bbee ccoonnssiiddeerreedd,, ffoorr eexxaammppllee:: RRuunnnniinngg ttiimmee OO((nn)),, mmeemmoorryy rreeqquuiirreemmeenntt OO((nn22)) nn == 5500 000000  OOuuttOOffMMeemmoorryyEExxcceeppttiioonn 14
  • 15. PPoollyynnoommiiaall AAllggoorriitthhmmss AA ppoollyynnoommiiaall--ttiimmee aallggoorriitthhmm iiss oonnee wwhhoossee wwoorrsstt--ccaassee ttiimmee ccoommpplleexxiittyy iiss bboouunnddeedd aabboovvee bbyy aa ppoollyynnoommiiaall ffuunnccttiioonn ooff iittss iinnppuutt ssiizzee WW((nn)) ∈ OO((pp((nn))))  EExxaammppllee ooff wwoorrsstt--ccaassee ttiimmee ccoommpplleexxiittyy PPoollyynnoommiiaall--ttiimmee:: lloogg nn,, 22nn,, 33nn33 ++ 44nn,, 22 ** nn lloogg nn NNoonn ppoollyynnoommiiaall--ttiimmee :: 22nn,, 33nn,, nnkk,, nn!! NNoonn--ppoollyynnoommiiaall aallggoorriitthhmmss ddoonn''tt wwoorrkk ffoorr llaarrggee iinnppuutt ddaattaa sseettss 15
  • 16. AAnnaallyyzziinngg CCoommpplleexxiittyy ooff AAllggoorriitthhmmss EExxaammpplleess
  • 17. CCoommpplleexxiittyy EExxaammpplleess iinntt FFiinnddMMaaxxEElleemmeenntt((iinntt[[]] aarrrraayy)) {{ iinntt mmaaxx == aarrrraayy[[00]];; ffoorr ((iinntt ii==00;; ii<<aarrrraayy..lleennggtthh;; ii++++)) {{ iiff ((aarrrraayy[[ii]] >> mmaaxx)) {{ mmaaxx == aarrrraayy[[ii]];; }} }} rreettuurrnn mmaaxx;; }} RRuunnss iinn OO((nn)) wwhheerree nn iiss tthhee ssiizzee ooff tthhee aarrrraayy  TThhee nnuummbbeerr ooff eelleemmeennttaarryy sstteeppss iiss ~~ nn
  • 18. CCoommpplleexxiittyy EExxaammpplleess ((22)) lloonngg FFiinnddIInnvveerrssiioonnss((iinntt[[]] aarrrraayy)) {{ lloonngg iinnvveerrssiioonnss == 00;; ffoorr ((iinntt ii==00;; ii<<aarrrraayy..LLeennggtthh;; ii++++)) ffoorr ((iinntt jj == ii++11;; jj<<aarrrraayy..LLeennggtthh;; ii++++)) iiff ((aarrrraayy[[ii]] >> aarrrraayy[[jj]])) iinnvveerrssiioonnss++++;; rreettuurrnn iinnvveerrssiioonnss;; }} RRuunnss iinn OO((nn22)) wwhheerree nn iiss tthhee ssiizzee ooff tthhee aarrrraayy  TThhee nnuummbbeerr ooff eelleemmeennttaarryy sstteeppss iiss ~~ nn**((nn++11)) // 22
  • 19. CCoommpplleexxiittyy EExxaammpplleess ((33)) ddeecciimmaall SSuumm33((iinntt nn)) {{ ddeecciimmaall ssuumm == 00;; ffoorr ((iinntt aa==00;; aa<<nn;; aa++++)) ffoorr ((iinntt bb==00;; bb<<nn;; bb++++)) ffoorr ((iinntt cc==00;; cc<<nn;; cc++++)) ssuumm ++== aa**bb**cc;; rreettuurrnn ssuumm;; }} RRuunnss iinn ccuubbiicc ttiimmee OO((nn33))  TThhee nnuummbbeerr ooff eelleemmeennttaarryy sstteeppss iiss ~~ nn33
  • 20. CCoommpplleexxiittyy EExxaammpplleess ((44)) lloonngg SSuummMMNN((iinntt nn,, iinntt mm)) {{ lloonngg ssuumm == 00;; ffoorr ((iinntt xx==00;; xx<<nn;; xx++++)) ffoorr ((iinntt yy==00;; yy<<mm;; yy++++)) ssuumm ++== xx**yy;; rreettuurrnn ssuumm;; }} RRuunnss iinn qquuaaddrraattiicc ttiimmee OO((nn**mm))  TThhee nnuummbbeerr ooff eelleemmeennttaarryy sstteeppss iiss ~~ nn**mm
  • 21. CCoommpplleexxiittyy EExxaammpplleess ((55)) lloonngg SSuummMMNN((iinntt nn,, iinntt mm)) {{ lloonngg ssuumm == 00;; ffoorr ((iinntt xx==00;; xx<<nn;; xx++++)) ffoorr ((iinntt yy==00;; yy<<mm;; yy++++)) iiff ((xx====yy)) ffoorr ((iinntt ii==00;; ii<<nn;; ii++++)) ssuumm ++== ii**xx**yy;; rreettuurrnn ssuumm;; }} RRuunnss iinn qquuaaddrraattiicc ttiimmee OO((nn**mm))  TThhee nnuummbbeerr ooff eelleemmeennttaarryy sstteeppss iiss ~~ nn**mm ++ mmiinn((mm,,nn))**nn
  • 22. CCoommpplleexxiittyy EExxaammpplleess ((66)) ddeecciimmaall CCaallccuullaattiioonn((iinntt nn)) {{ ddeecciimmaall rreessuulltt == 00;; ffoorr ((iinntt ii == 00;; ii << ((11<<<<nn));; ii++++)) rreessuulltt ++== ii;; rreettuurrnn rreessuulltt;; }} RRuunnss iinn eexxppoonneennttiiaall ttiimmee OO((22nn))  TThhee nnuummbbeerr ooff eelleemmeennttaarryy sstteeppss iiss ~~ 22nn
  • 23. CCoommpplleexxiittyy EExxaammpplleess ((77)) ddeecciimmaall FFaaccttoorriiaall((iinntt nn)) {{ iiff ((nn====00)) rreettuurrnn 11;; eellssee rreettuurrnn nn ** FFaaccttoorriiaall((nn--11));; }} RRuunnss iinn lliinneeaarr ttiimmee OO((nn))  TThhee nnuummbbeerr ooff eelleemmeennttaarryy sstteeppss iiss ~~ nn
  • 24. CCoommpplleexxiittyy EExxaammpplleess ((88)) ddeecciimmaall FFiibboonnaaccccii((iinntt nn)) {{ iiff ((nn ==== 00)) rreettuurrnn 11;; eellssee iiff ((nn ==== 11)) rreettuurrnn 11;; eellssee rreettuurrnn FFiibboonnaaccccii((nn--11)) ++ FFiibboonnaaccccii((nn--22));; }} RRuunnss iinn eexxppoonneennttiiaall ttiimmee OO((22nn))  TThhee nnuummbbeerr ooff eelleemmeennttaarryy sstteeppss iiss ~~ FFiibb((nn++11)) wwhheerree FFiibb((kk)) iiss tthhee kk--tthh FFiibboonnaaccccii''ss nnuummbbeerr
  • 26. DDaattaa SSttrruuccttuurreess EEffffiicciieennccyy 26 DDaattaa SSttrruuccttuurree AAdddd FFiinndd DDeelleettee by- Get-by-iinnddeexx AArrrraayy ((TT[[]])) OO((nn)) OO((nn)) OO((nn)) OO((11)) LLiinnkkeedd lliisstt ((LLiinnkkeeddLLiisstt<<TT>>)) O(1) OO((nn)) OO((nn)) OO((nn)) RReessiizzaabbllee aarrrraayy lliisstt ((LLiisstt<<TT>>)) O(1) OO((nn)) OO((nn)) OO((11)) SSttaacckk ((SSttaacckk<<TT>>)) OO((11)) -- OO((11)) -- QQuueeuuee ((QQuueeuuee<<TT>>)) OO((11)) -- OO((11)) --
  • 27. DDaattaa SSttrruuccttuurreess EEffffiicciieennccyy ((22)) 27 DDaattaa SSttrruuccttuurree AAdddd FFiinndd DDeelleettee by- Get-by-iinnddeexx HHaasshh ttaabbllee ((DDiiccttiioonnaarryy<<KK,,TT>>)) O(1) OO((11)) OO((11)) -- TTrreeee--bbaasseedd ddiiccttiioonnaarryy ((SSoorrtteedd DDiiccttiioonnaarryy<<KK,,TT>>)) OO((lloogg nn)) OO((lloogg nn)) OO((lloogg nn)) -- HHaasshh ttaabbllee bbaasseedd sseett ((HHaasshhSSeett<<TT>>)) O(1) OO((11)) OO((11)) -- TTrreeee bbaasseedd sseett ((SSoorrtteeddSSeett<<TT>>)) O(log nn)) OO((lloogg nn)) OO((lloogg nn)) --
  • 28. CChhoooossiinngg DDaattaa SSttrruuccttuurree AArrrraayyss ((TT[[]])) UUssee wwhheenn ffiixxeedd nnuummbbeerr ooff eelleemmeennttss sshhoouulldd bbee pprroocceesssseedd bbyy iinnddeexx RReessiizzaabbllee aarrrraayy lliissttss ((LLiisstt<<TT>>)) UUssee wwhheenn eelleemmeennttss sshhoouulldd bbee aaddddeedd aanndd pprroocceesssseedd bbyy iinnddeexx  LLiinnkkeedd lliissttss ((LLiinnkkeeddLLiisstt<<TT>>)) UUssee wwhheenn eelleemmeennttss sshhoouulldd bbee aaddddeedd aatt tthhee bbootthh ssiiddeess ooff tthhee lliisstt OOtthheerrwwiissee uussee rreessiizzaabbllee aarrrraayy lliisstt ((LLiisstt<<TT>>)) 28
  • 29. CChhoooossiinngg DDaattaa SSttrruuccttuurree ((22))  SSttaacckkss ((SSttaacckk<<TT>>)) UUssee ttoo iimmpplleemmeenntt LLIIFFOO ((llaasstt--iinn--ffiirrsstt--oouutt)) bbeehhaavviioorr LLiisstt<<TT>> ccoouulldd aallssoo wwoorrkk wweellll  QQuueeuueess ((QQuueeuuee<<TT>>)) UUssee ttoo iimmpplleemmeenntt FFIIFFOO ((ffiirrsstt--iinn--ffiirrsstt--oouutt)) bbeehhaavviioorr LLiinnkkeeddLLiisstt<<TT>> ccoouulldd aallssoo wwoorrkk wweellll  HHaasshh ttaabbllee bbaasseedd ddiiccttiioonnaarryy ((DDiiccttiioonnaarryy<<KK,,TT>>)) UUssee wwhheenn kkeeyy--vvaalluuee ppaaiirrss sshhoouulldd bbee aaddddeedd ffaasstt aanndd sseeaarrcchheedd ffaasstt bbyy kkeeyy EElleemmeennttss iinn aa hhaasshh ttaabbllee hhaavvee nnoo ppaarrttiiccuullaarr oorrddeerr 29
  • 30. CChhoooossiinngg DDaattaa SSttrruuccttuurree ((33))  BBaallaanncceedd sseeaarrcchh ttrreeee bbaasseedd ddiiccttiioonnaarryy ((SSoorrtteeddDDiiccttiioonnaarryy<<KK,,TT>>)) UUssee wwhheenn kkeeyy--vvaalluuee ppaaiirrss sshhoouulldd bbee aaddddeedd ffaasstt,, sseeaarrcchheedd ffaasstt bbyy kkeeyy aanndd eennuummeerraatteedd ssoorrtteedd bbyy kkeeyy HHaasshh ttaabbllee bbaasseedd sseett ((HHaasshhSSeett<<TT>>)) UUssee ttoo kkeeeepp aa ggrroouupp ooff uunniiqquuee vvaalluueess,, ttoo aadddd aanndd cchheecckk bbeelloonnggiinngg ttoo tthhee sseett ffaasstt EElleemmeennttss aarree iinn nnoo ppaarrttiiccuullaarr oorrddeerr  SSeeaarrcchh ttrreeee bbaasseedd sseett ((SSoorrtteeddSSeett<<TT>>)) UUssee ttoo kkeeeepp aa ggrroouupp ooff oorrddeerreedd uunniiqquuee vvaalluueess 30
  • 31. SSuummmmaarryy  AAllggoorriitthhmm ccoommpplleexxiittyy iiss rroouugghh eessttiimmaattiioonn ooff tthhee nnuummbbeerr ooff sstteeppss ppeerrffoorrmmeedd bbyy ggiivveenn ccoommppuuttaattiioonn CCoommpplleexxiittyy ccaann bbee llooggaarriitthhmmiicc,, lliinneeaarr,, nn lloogg nn,, ssqquuaarree,, ccuubbiicc,, eexxppoonneennttiiaall,, eettcc.. AAlllloowwss ttoo eessttiimmaattiinngg tthhee ssppeeeedd ooff ggiivveenn ccooddee bbeeffoorree iittss eexxeeccuuttiioonn DDiiffffeerreenntt ddaattaa ssttrruuccttuurreess hhaavvee ddiiffffeerreenntt eeffffiicciieennccyy oonn ddiiffffeerreenntt ooppeerraattiioonnss TThhee ffaasstteesstt aadddd // ffiinndd // ddeelleettee ssttrruuccttuurree iiss tthhee hhaasshh ttaabbllee –– OO((11)) ffoorr aallll tthheessee ooppeerraattiioonnss 31
  • 32. AAllggoorriitthhmmss CCoommpplleexxiittyy aanndd DDaattaa SSttrruuccttuurreess EEffffiicciieennccyy QQuueessttiioonnss?? http://academy.telerik.com
  • 33. EExxeerrcciisseess 11.. AA tteexxtt ffiillee ssttuuddeennttss..ttxxtt hhoollddss iinnffoorrmmaattiioonn aabboouutt ssttuuddeennttss aanndd tthheeiirr ccoouurrsseess iinn tthhee ffoolllloowwiinngg ffoorrmmaatt:: UUssiinngg SSoorrtteeddDDiiccttiioonnaarryy<<KK,,TT>> pprriinntt tthhee ccoouurrsseess iinn aallpphhaabbeettiiccaall oorrddeerr aanndd ffoorr eeaacchh ooff tthheemm pprriinnttss tthhee ssttuuddeennttss oorrddeerreedd bbyy ffaammiillyy aanndd tthheenn bbyy nnaammee:: 33 KKiirriill || IIvvaannoovv || CC## SStteeffkkaa || NNiikkoolloovvaa || SSQQLL SStteellaa || MMiinneevvaa || JJaavvaa MMiilleennaa || PPeettrroovvaa || CC## IIvvaann || GGrriiggoorroovv || CC## IIvvaann || KKoolleevv || SSQQLL CC##:: IIvvaann GGrriiggoorroovv,, KKiirriill IIvvaannoovv,, MMiilleennaa PPeettrroovvaa JJaavvaa:: SStteellaa MMiinneevvaa SSQQLL:: IIvvaann KKoolleevv,, SStteeffkkaa NNiikkoolloovvaa
  • 34. EExxeerrcciisseess ((22)) 22.. AA llaarrggee ttrraaddee ccoommppaannyy hhaass mmiilllliioonnss ooff aarrttiicclleess,, eeaacchh ddeessccrriibbeedd bbyy bbaarrccooddee,, vveennddoorr,, ttiittllee aanndd pprriiccee.. IImmpplleemmeenntt aa ddaattaa ssttrruuccttuurree ttoo ssttoorree tthheemm tthhaatt aalllloowwss ffaasstt rreettrriieevvaall ooff aallll aarrttiicclleess iinn ggiivveenn pprriiccee rraannggee [[xx……yy]].. HHiinntt:: uussee OOrrddeerreeddMMuullttiiDDiiccttiioonnaarryy<<KK,,TT>> ffrroomm WWiinntteelllleecctt''ss PPoowweerr CCoolllleeccttiioonnss ffoorr ..NNEETT.. 33.. IImmpplleemmeenntt aa ddaattaa ssttrruuccttuurree PPrriioorriittyyQQuueeuuee<<TT>> tthhaatt pprroovviiddeess aa ffaasstt wwaayy ttoo eexxeeccuuttee tthhee ffoolllloowwiinngg ooppeerraattiioonnss:: aadddd eelleemmeenntt;; eexxttrraacctt tthhee ssmmaalllleesstt eelleemmeenntt.. 44.. IImmpplleemmeenntt aa ccllaassss BBiiDDiiccttiioonnaarryy<<KK11,,KK2,,TT>> tthhaatt aalllloowwss aaddddiinngg ttrriipplleess {{kkeeyy11,, kkeeyy2,, vvaalluuee}} aanndd ffaasstt sseeaarrcchh bbyy kkeeyy11,, kkeeyy2 oorr bbyy bbootthh kkeeyy11 aanndd kkeeyy2.. NNoottee:: mmuullttiippllee vvaalluueess ccaann bbee ssttoorreedd ffoorr ggiivveenn kkeeyy.. 34
  • 35. EExxeerrcciisseess ((33)) 55.. AA tteexxtt ffiillee pphhoonneess..ttxxtt hhoollddss iinnffoorrmmaattiioonn aabboouutt ppeeooppllee,, tthheeiirr ttoowwnn aanndd pphhoonnee nnuummbbeerr:: DDuupplliiccaatteess ccaann ooccccuurr iinn ppeeooppllee nnaammeess,, ttoowwnnss aanndd pphhoonnee nnuummbbeerrss.. WWrriittee aa pprrooggrraamm ttoo eexxeeccuuttee aa sseeqquueennccee ooff ccoommmmaannddss ffrroomm aa ffiillee ccoommmmaannddss..ttxxtt::  ffiinndd((nnaammee)) –– ddiissppllaayy aallll mmaattcchhiinngg rreeccoorrddss bbyy ggiivveenn nnaammee ((ffiirrsstt,, mmiiddddllee,, llaasstt oorr nniicckknnaammee))  ffiinndd((nnaammee,, ttoowwnn)) –– ddiissppllaayy aallll mmaattcchhiinngg rreeccoorrddss bbyy ggiivveenn nnaammee aanndd ttoowwnn 35 MMiimmii SShhmmaattkkaattaa || PPlloovvddiivv || 00888888 112 3344 5566 KKiirreettoo || VVaarrnnaa || 00552 233 4455 6677 DDaanniieellaa IIvvaannoovvaa PPeettrroovvaa || KKaarrnnoobbaatt || 00889999 999999 888888 BBaatt GGaanncchhoo || SSooffiiaa || 002 994466 994466 994466