[Powered by Google Translate] [Sort bubble]
[JACKSON STEINKAMP HARVARD UNIVERSITÀ]
[B'DAN QIEGĦED CS50. CS50TV]
Sort Bubble huwa eżempju ta 'algoritmu issortjar -
jiġifieri, proċedura għall-għażla ta 'sett ta' elementi fil-
axxendenti jew dixxendenti ordni.
Per eżempju, jekk inti riedu biex issolvi firxa magħmul min-numri
[3, 5, 2, 9], implimentazzjoni korretta ta 'Sort Bubble se jerġa' lura l-
firxa magħżula [2, 3, 5, 9] f'ordni axxendenti.
Issa, jien ser jispjegaw fil pseudocode kif l-algoritmu xogħlijiet.
>> Ejja ngħidu aħna qed issortjar lista ta '5 numri interi - 3, 2, 9, 6, u 5.
L-algoritmu jibda billi tħares lejn l-ewwel żewġ elementi, 3 u 2,
u l-iċċekkjar jekk dawn qed out of order relattivi għal xulxin.
Dawn huma - 3 huwa akbar minn 2.
Biex tkun sabiex axxendenti, dawn għandhom ikunu l-mod ieħor madwar.
Għalhekk, aħna tpartit minnhom.
Issa l-lista tidher bħal dan: [2, 3, 9, 6, 5].
>> Sussegwentement, inħarsu lejn l-elementi tieni u t-tielet subparagrafi, 3 u 9.
Huma qed fl-ordni korretta relattivi għal xulxin.
Dan huwa, 3 huwa anqas minn 9 hekk l-algoritmu ma tpartit minnhom.
Sussegwentement, aħna nħarsu lejn 9 u 6. Huma qed out of order.
>> Għalhekk, għandna bżonn li tpartit lilhom minħabba 9 huwa akbar minn 6.
Fl-aħħar nett, irridu nħarsu lejn l-aħħar żewġ interi, 9 u 5.
Huma qed out of order, sabiex dawn għandhom jiġu skambjati.
Wara l-pass kompleta ewwel permezz tal-lista,
jidher qisu dan: [2, 3, 6, 5, 9].
Mhux ħażin. Huwa kważi magħżula.
Iżda għandna bżonn li tgħaddi minn ġos-lista mill-ġdid biex tiksbu kompletament magħżula.
Żewġ huwa inqas minn 3, hekk aħna ma tpartit minnhom.
>> Tliet huwa inqas minn 6, hekk aħna ma tpartit minnhom.
Sitta huwa ikbar minn 5. Aħna biddlu.
Sitta huwa inqas minn 9. Aħna ma tpartit.
Wara t-tieni pass permezz ta ', jidher qisu dan: [2, 3, 5, 6, 9]. Perfect.
Issa, ejja tikteb dan fl pseudocode.
Bażikament, għal kull element fil-lista, għandna bżonn li nħarsu lejn din
u l-element direttament għad-dritt tiegħu.
Jekk huma barra mill-ordni relattiva għal xulxin - jiġifieri, jekk l-element fuq ix-xellug
huwa akbar mill-wieħed fuq il-lemin - għandna tpartit iż-żewġ elementi.
>> Aħna nagħmlu dan għal kull element tal-lista, u aħna ħadna wieħed jgħaddi permezz.
Issa aħna biss għandhom jagħmlu l-ħinijiet pass-through biżżejjed biex jiżguraw il-lista
hija kompletament, magħżul b'mod xieraq.
Imma kif ħafna drabi għandna biex jgħaddu l-lista biex
garanzija li aħna qed isir?
Ukoll, ix-xenarju tal-agħar każ hija jekk għandna lista kompletament lura.
Imbagħad, hija tieħu numru ta 'jgħaddi throughs ugwali għan-numru
ta 'elementi n-1.
Jekk dan ma jagħmilx sens intuwittivament, think ta 'każ sempliċi - il-lista [2, 1].
>> Dan ser jieħu waħda pass-through li sort korrett.
[3, 2, 1] - L-agħar każ hija li bi 3 elementi magħżula lura,
li għaddej biex tieħu 2 iterazzjonijiet biex sort.
Wara iterazzjoni waħda, huwa [2, 1, 3].
Il-rendimenti 2-firxa magħżula [1, 2, 3].
Allura inti taf li inti qatt ma jkollhom jgħaddu mill-firxa, b'mod ġenerali,
aktar minn n-1 drabi, meta n hija n-numru ta 'elementi fil-firxa.
Huwa sejjaħ Sort Bubble minħabba li l-elementi akbar tendenza li "bużżieqa up"
lejn il-lemin pretty malajr.
Fil-fatt, dan algoritmu għandha imġiba interessanti ħafna.
>> Wara iterazzjonijiet m permezz tal-firxa sħiħa,
l-elementi m lemini huma garantiti
li jintgħażlu fi post korretta tagħhom.
Jekk inti tixtieq li tara dan għalik innifsek,
nistgħu tipprova fuq lista kompletament lura [9, 6, 5, 3, 2].
Wara jgħaddu l-lista sħiħa,
[Ħoss tal-kitba]
[6, 9, 5, 3, 2], [6, 5, 9, 3, 2], [6, 5, 3, 9, 2], [6, 5, 3, 2, 9]
l-element lemini 9 huwa fil-post xieraq tagħha.
Wara t-tieni pass-through, il-6 se jkollu "effervexxentement up" għall-
post lemini 2.
Iż-żewġ elementi fuq id-dritt - 6 u 9 - se jkunu fil-postijiet korretta tagħhom
wara l-ewwel żewġ jgħaddu throughs.
>> Allura, kif nistgħu jużaw dan biex jottimizzaw l-algoritmu?
Ukoll, wara iterazzjoni waħda mill-firxa
aħna ma attwalment bżonn li jiċċekkja l-element lemini
għaliex nafu dan huwa magħżula.
Wara żewġ iterazzjonijiet, nafu fiċ-ċert l-lemini żewġ elementi huma fis-seħħ.
Għalhekk, b'mod ġenerali, wara iterazzjonijiet k permezz tal-firxa sħiħa,
kontroll tal-elementi k aħħar hija żejda peress li nafu
dawn qed fil-post korretta diġà.
>> Mela jekk int issortjar firxa ta 'elementi n,
fuq l-ewwel iterazzjoni - you'll jkollhom biex issolvi l-elementi kollha - l-ewwel n-0.
Fuq il-tieni iterazzjoni, inti ser ikollok tħares lejn l-elementi kollha, iżda l-aħħar -
l-ewwel n-1.
Ieħor ottimizzazzjoni tista 'tkun li jiċċekkjaw jekk il-lista hija diġà magħżula
wara kull iterazzjoni.
Jekk huwa diġà magħżula, ma kellniex bżonn tagħmel iterazzjonijiet kwalunkwe aktar
permezz tal-lista.
Kif nistgħu nagħmlu dan?
Ukoll, jekk aħna ma tagħmel l-ebda swaps fuq pass-through tal-lista,
huwa ċar li l-lista kienet diġà magħżula għaliex aħna ma tpartit xejn.
Allura aħna żgur ma jkollhom sort mill-ġdid.
>> Forsi inti tista 'initialize varjabbli bandiera imsejjaħ "ma jintgħażlux" li
falza u bidla li minnu jekk inti għandek tpartit xi elementi dwar
iterazzjoni waħda mill-firxa.
Jew bl-istess mod, jagħmel kontro biex jingħaddu kemm swaps inti tagħmel
fuq kull iterazzjoni partikolari.
Fl-aħħar ta 'iterazzjoni, jekk inti ma tpartit ebda mill-elementi,
inti taf l-lista hija diġà magħżula u qed isir.
Sort Bubble, bħal algoritmi issortjar oħra, jista 'jkun
tweaked li jaħdmu għal elementi li għandhom metodu tordna.
>> Dan huwa, minħabba żewġ elementi ikollok mod biex jgħidu jekk l-ewwel waħda
huwa akbar minn, ugwali għal jew inqas mill-2.
Per eżempju, inti tista sort ittri tal-alfabett billi qal
li <b, b <c, eċċ
Jew inti tista sort ġranet tal-ġimgħa fejn Ħadd hija inqas minn it-tnejn
li hija inqas minn Tlieta.
>> Sort Bubble huwa bl-ebda mod algoritmu issortjar effiċjenti ħafna jew malajr.
Agħar każ runtime tagħha hija Big O ta 'n ²
għaliex inti għandek tagħmel iterazzjonijiet n permezz ta 'lista
iċċekkjar elementi kollha n kull pass-through, nxn = n ².
Din id-darba run ifisser li bħala n-numru ta 'elementi int issortjar żidiet,
il-ħin ta 'tħaddim żidiet quadratically.
>> Imma jekk effiċjenza mhuwiex ta 'tħassib kbir tal-programm tiegħek
jew jekk int biss issortjar numru żgħir ta 'elementi,
inti tista 'ssib Sort Bubble utli għaliex
huwa wieħed mill-algoritmi sempliċi għażla li wieħed jifhem
u għall-kodiċi.
Huwa wkoll mod tajjeb ħafna biex jiksbu esperjenza ma jittraduċu teoretiku
algoritmu fis-kodiċi funzjonament attwali.
Ukoll, li Sort Bubble għalik. Grazzi għall-ħars.
CS50.TV