[Powered by Google Translate] TOMMY: skulum taka a líta á konar val, algrím
fyrir að taka lista yfir númer og flokkun þeirra.
Reiknirit, muna, er einfaldlega skref-fyrir-skref
aðferð til að ljúka verkefni.
Grunnhugmyndin á bak konar val er að skipta
lista okkar í tvo hluta -
a raðað hluti og unsorted hluta.
Í hvert skref reiknirit, er fjöldi flutt úr
Unsorted hluta til raðað hluta til að lokum
Allt lista er raðað.
Svo hér er listi yfir sex númer -
23, 42, 4, 16, 8, og 15.
Núna er allt listi er talin Unsorted.
Jafnvel þótt fjöldi eins og 16. maí þegar vera rétt þess
staðsetningu, reiknirit okkar hefur enga leið að vita það fyrr en
Allt lista er raðað.
Þannig að við munum íhuga hvert númerið Unsorted fyrr við að raða
það sjálf.
Við vitum að við viljum lista til að vera í hækkandi röð.
Þannig að við munum vilja til að byggja upp raðað hluta lista okkar
frá vinstri til hægri, minnsta til stærsta.
Til að gera það, munum við þurfa að finna lágmarks óflokkuðu þáttur
og setja það í lok raðaða hluta.
Þar sem þetta er ekki raðað, er eina leiðin til að gera það er að
líta á hvern þáttur í óflokkuðu hluta, muna
hvaða þáttur er lægsta og samanburður
hver þáttur í því.
Svo munum við fyrst líta á 23.
Þetta er fyrsti þáttur sem við höfum séð, svo við munum muna
það sem minnst.
Næst munum við líta á 42.
42 er stærri en 23, svo er 23 enn lágmarki.
Næst er 4 sem er minna en 23, svo við munum muna 4
sem nýju lágmarki.
Næsta er 16 sem er stærri en 4, svo 4
er enn lágmarki.
8 er stærri en 4, og 15 er stærri en 4, SO 4 þarf að vera
minnsti Unsorted þáttur.
Svo jafnvel þó eins og menn sem við getum strax séð að 4 er
lágmarks þáttur, reiknirit okkar þarf að líta á
hvert Unsorted þáttur, jafnvel eftir að við höfum fundið 4 -
lágmarki þáttur.
Svo nú er að við höfum fundið lágmarks frumefni, 4, munum við viljum
að færa það inn í raðaða hluta á listanum.
Þar sem þetta er fyrsta skrefið, það þýðir að við viljum að setja 4 í
upphaf listanum.
Núna 23 er í upphafi á listanum, svo
við skulum skipta um 4 og 23.
Svo nú lista okkar lítur svona út.
Við vitum að 4 verða að vera í síðasta stað, því það er
bæði lítill þáttur og þáttur í upphafi
á listanum.
Þannig að þetta þýðir að við gerum ekki alltaf að færa það aftur.
Svo skulum endurtaka þetta ferli til að bæta annar þáttur til
raðað hluti á listanum.
Við vitum að við þurfum ekki að horfa á 4, því það er
þegar raðað.
Þannig að við getum byrjað á 42, sem við munum muna sem
lágmarki þáttur.
Svo næst munum við líta á 23 sem er minna en 42, svo við
man 23 er nýja lágmarki.
Næst ætlum við að sjá 16 sem er minna en 23, svo
16 er nýja lágmarki.
Nú erum við að líta á 8 sem er minna en 16, svo
8 er nýtt lágmark.
Og að lokum 8 er minna en 15, þannig að við vitum að 8 er lágmark
Unsorted þáttur.
Svo þýðir að við ættum að bæta 8 að raða
hluti á listanum.
Núna 4 er bara raðað atriði, þannig að við viljum að setja
8 við hliðina á 4.
Þar 42 er fyrsti þáttur í óflokkuðu hluta
lista, munum við vilja til að skipta um 42 og 8.
Svo nú lista okkar lítur svona út.
4 og 8 tákna raðað hluta listanum og
eftir tölur tákna unsorted
hluti á listanum.
Svo skulum halda áfram með öðru endurtekning.
Við byrjum með 23 í þetta sinn, þar sem við þurfum ekki að horfa á
The 4 og 8 aftur því þeir hafa
þegar verið raðað.
16 er minna en 23, svo við munum muna
16 eins og nýju lágmarki.
16 er minna en 42, en 15 er minna en 16, svo 15 verður
lágmarks Unsorted þáttur.
Svo nú að við viljum skipta á 15 og 23 til
gefa okkur þennan lista.
Raðaða hluti listanum samanstendur af 4, 8 og 15, og
þessir þættir eru enn Unsorted.
En það gerist bara svo að næsta unsorted frumefni, 16,
er þegar raðað.
Hins vegar, það er engin leið fyrir reiknirit okkar að vita að 16
er nú þegar í rétta stað, svo að við þurfum enn að
endurtaka nákvæmlega sömu aðferð.
Þannig sjáum við að 16 er minna en 42, og 16 er minna en 23, svo
16 verða að vera að lágmarki þáttur.
Það er ómögulegt að skipta þessi þáttur með sig, þannig að við getum
einfaldlega láta það í þessum stað.
Þannig að við þurfum eitt fleiri fara á reiknirit okkar.
42 er meira en 23, svo 23 hlýtur að vera
lágmarki Unsorted þáttur.
Þegar við skipti á 23 og 42, við enda upp með endanlegri okkar
raðað lista -
4, 8, 15, 16, 23, 42.
Við vitum 42 verða að vera á réttum stað þar sem það er
eini þátturinn eftir, og það er val tegund.
Skulum formlega nú reiknirit okkar með nokkrum
sauðakóðanum.
Á línu eitt, getum við séð að við þurfum að samþætta yfir
hver þáttur af listanum.
Nema síðasta þáttur þar sem 1 þáttur
Listinn er þegar raðað.
Á línu tvö, telja við fyrsta þáttur í unsorted
hluti á listanum til að vera lágmark, eins og við gerðum með okkar
dæmi, þannig að við höfum eitthvað til að bera saman.
Line þrjú hefst annað lykkju sem við iterate yfir
hver Unsorted þáttur.
Við vitum að eftir að ég endurtekningar, raðaða hluta
lista okkar verður að hafa i þætti í henni frá hverju skrefi
konar einn þáttur.
Svo fyrsta unsorted þátturinn verður að vera í stöðu ég auk 1.
Á línu fjögur, bera saman við núverandi þáttur í lágmarki
þáttur sem við höfum séð hingað til.
Ef núverandi þáttur er minni en lágmarks
þáttur, svo við minnumst nú þáttur sem nýr
Lágmark á línu fimm.
Að lokum, á línum sex og sjö, skipta við lágmarks
þáttur með fyrstu óflokkuðu frumefni, þannig
bæta því við raðaða hluta á listanum.
Þegar við höfum reiknirit, mikilvæg spurning að spyrja
okkur sem forritari er hversu lengi var það tekið?
Við munum fyrst spyrja hversu langan tíma tekur það fyrir þetta
algrím til að keyra í versta falli?
Muna að tákna þetta gangi
tíma með stóru O merki.
Í því skyni að ákvarða lágmarks óflokkuðu frumefni, við
raun þurfti að bera hvert stak í listanum til
hver annar þáttur í listanum.
Innsæi, þetta hljómar eins og O í n veldi rekstri.
Þegar litið er á sauðakóðanum, höfum við einnig lykkju hreiður inni
önnur lykkja, sem vissulega hljómar eins og O
í n veldi rekstri.
En mundu að við höfum ekki þurft að líta yfir
allt lista við ákvörðun lágmarks óflokkuðu frumefni?
Þegar við vissum að 4 var raðað, til dæmis, við fengum ekki
þurfa að líta á það aftur.
Svo þýðir þetta lægri í gangi tíma?
Fyrir lista okkar lengd 6 þurftum við að fimm
samanburð á fyrstu frumefni, fjögur samanburð
annar þátturinn, og svo framvegis.
Það þýðir að heildarfjöldi skref er summan af
Heiltölurnar frá 1 til lengd lista mínus 1.
Við getum táknað þetta með samantekt.
Við munum ekki fara inn summations hér.
En það kemur í ljós að þessi samantekt er jafn n sinnum
N mínus 1 yfir 2.
Eða equivalently, n veldi yfir 2 mínus N á 2.
Þegar rætt er um asymptotic afturkreistingur, þetta N kvaðrat tíma
er að fara að ráða þessa n tíma.
Svo er val konar O N veldi.
Muna að í dæmi okkar, val tegund enn þörf til
athuga hvort tala sem var þegar raðað
þarf að flytja.
Svo það þýðir að ef við hljóp val konar yfir þegar
raðað lista, myndi það krefjast þess sama fjölda ráðstafanir sem þau
myndi þegar í gangi yfir alveg óflokkuðu lista.
Svo er val að raða besta ræða árangur n veldi,
sem við tákna með omega n veldi.
Og það er það að raða val.
Bara eitt af mörgum reiknirit sem við getum
nota til að raða listanum.
Mitt nafn er Tommy, og þetta er cs50.