[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.