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
Ad

More Related Content

What's hot (20)

21 High-quality programming code construction part-ii
21 High-quality programming code construction part-ii21 High-quality programming code construction part-ii
21 High-quality programming code construction part-ii
maznabili
 
Cursos Polilab - Degradação e estabilização de polímeros aula 02
Cursos Polilab - Degradação e estabilização de polímeros aula 02Cursos Polilab - Degradação e estabilização de polímeros aula 02
Cursos Polilab - Degradação e estabilização de polímeros aula 02
Fernando Jose Novaes
 
semesta
semestasemesta
semesta
Dani Ibrahim
 
Safe laparoscopy
Safe laparoscopySafe laparoscopy
Safe laparoscopy
Mamdouh Sabry
 
GastritisZaydoon
GastritisZaydoonGastritisZaydoon
GastritisZaydoon
Zay Doon
 
Nguyen kim doanh ta
Nguyen kim doanh taNguyen kim doanh ta
Nguyen kim doanh ta
Duy Quang
 
Rational zero of polynomial function
Rational zero of polynomial functionRational zero of polynomial function
Rational zero of polynomial function
Department of Education
 
Maize
MaizeMaize
Maize
Rione Drevale
 
Avaliacao de investimentos
Avaliacao de investimentosAvaliacao de investimentos
Avaliacao de investimentos
danilobotucatu
 
Business plan presentation_format
Business plan presentation_formatBusiness plan presentation_format
Business plan presentation_format
bindur87
 
10 het eerste licht
10 het eerste licht10 het eerste licht
10 het eerste licht
Kees De Jager
 
3 komeetbezoek
3 komeetbezoek3 komeetbezoek
3 komeetbezoek
Kees De Jager
 
The anatomy of a dollar bill
The anatomy of a dollar billThe anatomy of a dollar bill
The anatomy of a dollar bill
Seadin Xhaferi
 
Fármacos sistema nervioso y epinefrina
Fármacos sistema nervioso y epinefrinaFármacos sistema nervioso y epinefrina
Fármacos sistema nervioso y epinefrina
Jose Dega
 
solar activity and climate
solar activity and climatesolar activity and climate
solar activity and climate
Kees De Jager
 
Upper tibial valgus osteotomy using a dynamic external fixator
Upper tibial valgus osteotomy using a dynamic external fixatorUpper tibial valgus osteotomy using a dynamic external fixator
Upper tibial valgus osteotomy using a dynamic external fixator
Alexander Bardis
 
Impression materials review
Impression materials reviewImpression materials review
Impression materials review
razan reyadh
 
Fluid & electrolytes & acid base
Fluid & electrolytes & acid baseFluid & electrolytes & acid base
Fluid & electrolytes & acid base
Michelle Harris
 
21 High-quality programming code construction part-ii
21 High-quality programming code construction part-ii21 High-quality programming code construction part-ii
21 High-quality programming code construction part-ii
maznabili
 
Cursos Polilab - Degradação e estabilização de polímeros aula 02
Cursos Polilab - Degradação e estabilização de polímeros aula 02Cursos Polilab - Degradação e estabilização de polímeros aula 02
Cursos Polilab - Degradação e estabilização de polímeros aula 02
Fernando Jose Novaes
 
GastritisZaydoon
GastritisZaydoonGastritisZaydoon
GastritisZaydoon
Zay Doon
 
Nguyen kim doanh ta
Nguyen kim doanh taNguyen kim doanh ta
Nguyen kim doanh ta
Duy Quang
 
Avaliacao de investimentos
Avaliacao de investimentosAvaliacao de investimentos
Avaliacao de investimentos
danilobotucatu
 
Business plan presentation_format
Business plan presentation_formatBusiness plan presentation_format
Business plan presentation_format
bindur87
 
The anatomy of a dollar bill
The anatomy of a dollar billThe anatomy of a dollar bill
The anatomy of a dollar bill
Seadin Xhaferi
 
Fármacos sistema nervioso y epinefrina
Fármacos sistema nervioso y epinefrinaFármacos sistema nervioso y epinefrina
Fármacos sistema nervioso y epinefrina
Jose Dega
 
solar activity and climate
solar activity and climatesolar activity and climate
solar activity and climate
Kees De Jager
 
Upper tibial valgus osteotomy using a dynamic external fixator
Upper tibial valgus osteotomy using a dynamic external fixatorUpper tibial valgus osteotomy using a dynamic external fixator
Upper tibial valgus osteotomy using a dynamic external fixator
Alexander Bardis
 
Impression materials review
Impression materials reviewImpression materials review
Impression materials review
razan reyadh
 
Fluid & electrolytes & acid base
Fluid & electrolytes & acid baseFluid & electrolytes & acid base
Fluid & electrolytes & acid base
Michelle Harris
 

Viewers also liked (7)

05 Conditional statements
05 Conditional statements05 Conditional statements
05 Conditional statements
maznabili
 
Lecture04
Lecture04Lecture04
Lecture04
elearning_portal
 
9. statements (conditional statements)
9. statements (conditional statements)9. statements (conditional statements)
9. statements (conditional statements)
Way2itech
 
Conditional statement
Conditional statementConditional statement
Conditional statement
Maxie Santos
 
CONDITIONAL STATEMENT IN C LANGUAGE
CONDITIONAL STATEMENT IN C LANGUAGECONDITIONAL STATEMENT IN C LANGUAGE
CONDITIONAL STATEMENT IN C LANGUAGE
Ideal Eyes Business College
 
Control statements
Control statementsControl statements
Control statements
Kanwalpreet Kaur
 
Slideshare ppt
Slideshare pptSlideshare ppt
Slideshare ppt
Mandy Suzanne
 
Ad

Similar to 19 Algorithms and complexity (20)

Symmetry and group theory
Symmetry and group theorySymmetry and group theory
Symmetry and group theory
Rawat DA Greatt
 
Liver cirrhosis-hematemsis-peptic Ulcer Lecture
Liver cirrhosis-hematemsis-peptic Ulcer LectureLiver cirrhosis-hematemsis-peptic Ulcer Lecture
Liver cirrhosis-hematemsis-peptic Ulcer Lecture
Nadine El-Hussieny
 
14827 8 a d converter
14827 8 a d converter14827 8 a d converter
14827 8 a d converter
Sandeep Kumar
 
Biomech of cerv disk medium
Biomech of cerv disk mediumBiomech of cerv disk medium
Biomech of cerv disk medium
Alexander Bardis
 
19 human research 2
19 human research 219 human research 2
19 human research 2
emmavan
 
#7 dysbiosis and leaky gut syndrome
#7 dysbiosis and leaky gut syndrome#7 dysbiosis and leaky gut syndrome
#7 dysbiosis and leaky gut syndrome
Home Makers
 
1 pigmentation
1 pigmentation1 pigmentation
1 pigmentation
Ahmed Amer
 
Requerimientos energéticos 2014
Requerimientos energéticos 2014Requerimientos energéticos 2014
Requerimientos energéticos 2014
William Pereda
 
Tumor of the eye lid
Tumor of the eye lidTumor of the eye lid
Tumor of the eye lid
Tina Chandar
 
pre-prosthetic surgery
 pre-prosthetic surgery pre-prosthetic surgery
pre-prosthetic surgery
vasanramkumar
 
Political Identity Assignment
Political Identity AssignmentPolitical Identity Assignment
Political Identity Assignment
jkoryan
 
Types of communication
Types of communicationTypes of communication
Types of communication
Dhimant Rakholiya
 
Rehab for sick_units
Rehab for sick_unitsRehab for sick_units
Rehab for sick_units
Rashmi Sinha
 
Ambiental resumo - apostila direito ambiental
Ambiental   resumo - apostila direito ambientalAmbiental   resumo - apostila direito ambiental
Ambiental resumo - apostila direito ambiental
Lucas Simões
 
Unidad VI. Un ciclo
Unidad VI. Un cicloUnidad VI. Un ciclo
Unidad VI. Un ciclo
Erys_Introduccion
 
Ciivic education 1
Ciivic education 1Ciivic education 1
Ciivic education 1
Ali Asmar Lubis
 
Spinal injuries
Spinal injuriesSpinal injuries
Spinal injuries
Alexander Bardis
 
Symmetry and group theory
Symmetry and group theorySymmetry and group theory
Symmetry and group theory
Rawat DA Greatt
 
Liver cirrhosis-hematemsis-peptic Ulcer Lecture
Liver cirrhosis-hematemsis-peptic Ulcer LectureLiver cirrhosis-hematemsis-peptic Ulcer Lecture
Liver cirrhosis-hematemsis-peptic Ulcer Lecture
Nadine El-Hussieny
 
14827 8 a d converter
14827 8 a d converter14827 8 a d converter
14827 8 a d converter
Sandeep Kumar
 
Biomech of cerv disk medium
Biomech of cerv disk mediumBiomech of cerv disk medium
Biomech of cerv disk medium
Alexander Bardis
 
19 human research 2
19 human research 219 human research 2
19 human research 2
emmavan
 
#7 dysbiosis and leaky gut syndrome
#7 dysbiosis and leaky gut syndrome#7 dysbiosis and leaky gut syndrome
#7 dysbiosis and leaky gut syndrome
Home Makers
 
1 pigmentation
1 pigmentation1 pigmentation
1 pigmentation
Ahmed Amer
 
Requerimientos energéticos 2014
Requerimientos energéticos 2014Requerimientos energéticos 2014
Requerimientos energéticos 2014
William Pereda
 
Tumor of the eye lid
Tumor of the eye lidTumor of the eye lid
Tumor of the eye lid
Tina Chandar
 
pre-prosthetic surgery
 pre-prosthetic surgery pre-prosthetic surgery
pre-prosthetic surgery
vasanramkumar
 
Political Identity Assignment
Political Identity AssignmentPolitical Identity Assignment
Political Identity Assignment
jkoryan
 
Rehab for sick_units
Rehab for sick_unitsRehab for sick_units
Rehab for sick_units
Rashmi Sinha
 
Ambiental resumo - apostila direito ambiental
Ambiental   resumo - apostila direito ambientalAmbiental   resumo - apostila direito ambiental
Ambiental resumo - apostila direito ambiental
Lucas Simões
 
Ad

More from maznabili (20)

22 Methodology of problem solving
22 Methodology of problem solving22 Methodology of problem solving
22 Methodology of problem solving
maznabili
 
21 high-quality programming code construction part-i
21 high-quality programming code construction part-i21 high-quality programming code construction part-i
21 high-quality programming code construction part-i
maznabili
 
20 Object-oriented programming principles
20 Object-oriented programming principles20 Object-oriented programming principles
20 Object-oriented programming principles
maznabili
 
17 Trees and graphs
17 Trees and graphs17 Trees and graphs
17 Trees and graphs
maznabili
 
16 Linear data structures
16 Linear data structures16 Linear data structures
16 Linear data structures
maznabili
 
15 Text files
15 Text files15 Text files
15 Text files
maznabili
 
14 Defining classes
14 Defining classes14 Defining classes
14 Defining classes
maznabili
 
13 Strings and text processing
13 Strings and text processing13 Strings and text processing
13 Strings and text processing
maznabili
 
12 Exceptions handling
12 Exceptions handling12 Exceptions handling
12 Exceptions handling
maznabili
 
11 Using classes and objects
11 Using classes and objects11 Using classes and objects
11 Using classes and objects
maznabili
 
10 Recursion
10 Recursion10 Recursion
10 Recursion
maznabili
 
09 Methods
09 Methods09 Methods
09 Methods
maznabili
 
08 Numeral systems
08 Numeral systems08 Numeral systems
08 Numeral systems
maznabili
 
07 Arrays
07 Arrays07 Arrays
07 Arrays
maznabili
 
06 Loops
06 Loops06 Loops
06 Loops
maznabili
 
04 Console input output-
04 Console input output-04 Console input output-
04 Console input output-
maznabili
 
03 Operators and expressions
03 Operators and expressions03 Operators and expressions
03 Operators and expressions
maznabili
 
02 Primitive data types and variables
02 Primitive data types and variables02 Primitive data types and variables
02 Primitive data types and variables
maznabili
 
01 Introduction to programming
01 Introduction to programming01 Introduction to programming
01 Introduction to programming
maznabili
 
00 Fundamentals of csharp course introduction
00 Fundamentals of csharp course introduction00 Fundamentals of csharp course introduction
00 Fundamentals of csharp course introduction
maznabili
 
22 Methodology of problem solving
22 Methodology of problem solving22 Methodology of problem solving
22 Methodology of problem solving
maznabili
 
21 high-quality programming code construction part-i
21 high-quality programming code construction part-i21 high-quality programming code construction part-i
21 high-quality programming code construction part-i
maznabili
 
20 Object-oriented programming principles
20 Object-oriented programming principles20 Object-oriented programming principles
20 Object-oriented programming principles
maznabili
 
17 Trees and graphs
17 Trees and graphs17 Trees and graphs
17 Trees and graphs
maznabili
 
16 Linear data structures
16 Linear data structures16 Linear data structures
16 Linear data structures
maznabili
 
15 Text files
15 Text files15 Text files
15 Text files
maznabili
 
14 Defining classes
14 Defining classes14 Defining classes
14 Defining classes
maznabili
 
13 Strings and text processing
13 Strings and text processing13 Strings and text processing
13 Strings and text processing
maznabili
 
12 Exceptions handling
12 Exceptions handling12 Exceptions handling
12 Exceptions handling
maznabili
 
11 Using classes and objects
11 Using classes and objects11 Using classes and objects
11 Using classes and objects
maznabili
 
10 Recursion
10 Recursion10 Recursion
10 Recursion
maznabili
 
08 Numeral systems
08 Numeral systems08 Numeral systems
08 Numeral systems
maznabili
 
04 Console input output-
04 Console input output-04 Console input output-
04 Console input output-
maznabili
 
03 Operators and expressions
03 Operators and expressions03 Operators and expressions
03 Operators and expressions
maznabili
 
02 Primitive data types and variables
02 Primitive data types and variables02 Primitive data types and variables
02 Primitive data types and variables
maznabili
 
01 Introduction to programming
01 Introduction to programming01 Introduction to programming
01 Introduction to programming
maznabili
 
00 Fundamentals of csharp course introduction
00 Fundamentals of csharp course introduction00 Fundamentals of csharp course introduction
00 Fundamentals of csharp course introduction
maznabili
 

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