Tämä blogi perustuu jakamisen ja valloittamisen lähestymistapaan. Yhdistä lajittelu on 'jaa ja valloita' -algoritmi, jossa ongelma on jaettu alakysymyksiin ja yhdistetään sitten ratkaisun valloittamiseksi. Tämä blogi yhdistämisessä Lajittele opastaa sinut alla olevien aiheiden läpi yksityiskohtaisesti -
toteuta prioriteettijono c ++
- Mikä on yhdistämislajittelu Pythonissa?
- Divide and Conquer -lähestymistapa
- Yhdistämislajittelun toteuttaminen Pythonissa
- Vuokaavio yhdistämisen lajittelun toteuttamiseksi
- Edut ja käyttö
Mikä on yhdistämislajittelu Pythonissa?
Yhdistä lajittelu perustuu jakamis- ja valloitusalgoritmiin, jossa tuloryhmä jaetaan kahteen puolikkaaseen, lajitellaan sitten erikseen ja yhdistetään takaisin ratkaisun saavuttamiseksi. Funktioiden yhdistämistä () käytetään lajiteltujen yhdistämiseen .
Divide and Conquer -lähestymistapa
- Matriisi jaetaan kahtia ja prosessi toistetaan jokaisen puoliskon kanssa, kunnes kukin puolikas on kooltaan 1 tai 0.
- Koko 1 on matalasti lajiteltu.
- Nyt kaksi lajiteltua taulukkoa on yhdistetty yhdeksi suureksi ryhmäksi. Ja tätä jatketaan, kunnes kaikki elementit on yhdistetty ja taulukko on lajiteltu.
Tässä on yhdistämisen lajittelun visualisointi kuvan tyhjentämiseksi
Syöttötaulukko = [3,1,4,1,5,9,2,6,5,4]
Siirrytään nyt täytäntöönpanoon.
Yhdistämislajittelun toteuttaminen Pythonissa
def mergeSort (nlist): tulosta ('Spliting', nlist), jos len (nlist)> 1: mid = len (nlist) // 2 lefthalf = nlist [: mid] righthalf = nlist [mid:] mergeSort (vasen puoli) mergeSort (oikea puoli) i = j = k = 0, kun taas minäTuotos:
$ python main.py
(”Halkaisu”, [3, 1, 4, 1, 5, 9, 2, 6, 5, 4])
(”Halkaisu”, [3, 1, 4, 1, 5])
(”Halkaisu”, [3, 1])
(’Halkaisu’, [3])
(”Yhdistyminen”, [3])
(’Halkaisu’, [1])
(”Yhdistyminen”, [1])
(”Yhdistyminen”, [1, 3])
(’Halkaisu’, [4, 1, 5])
(”Halkaisu”, [4])
(”Yhdistyminen”, [4])
(’Halkaisu’, [1, 5])
(’Halkaisu’, [1])
(”Yhdistyminen”, [1])
(”Halkaisu”, [5])
(”Yhdistyminen”, [5])
(”Yhdistyminen”, [1, 5])
(”Yhdistyminen”, [1, 4, 5])
(”Yhdistyminen”, [1, 1, 3, 4, 5])
(’Halkaisu’, [9, 2, 6, 5, 4])
(”Halkaisu”, [9, 2])
(’Halkaisu’, [9])
(”Yhdistyminen”, [9])
(’Halkaisu’, [2])
(”Yhdistyminen”, [2])
(”Yhdistyminen”, [2, 9])
(”Halkaisu”, [6, 5, 4])
(”Halkaisu”, [6])
(”Yhdistyminen”, [6])
(’Halkaisu’, [5, 4])
(”Halkaisu”, [5])
(”Yhdistyminen”, [5])
(”Halkaisu”, [4])
(”Yhdistyminen”, [4])
(”Yhdistyminen”, [4, 5])
(”Yhdistyminen”, [4, 5, 6])
(”Yhdistyminen”, [2, 4, 5, 6, 9])
(”Yhdistyminen”, [1, 1, 2, 3, 4, 4, 5, 5, 6, 9])
[1, 1, 2, 3, 4, 4, 5, 5, 6, 9]
pinoa ja kasaa muistia javaVuokaavio yhdistämisen lajittelun toteuttamiseksi
Yhdistämisen lajittelun edut ja käyttö
Suurin osa muista algoritmeista toimii huonosti peräkkäisten tietorakenteiden, kuten tiedostojen ja linkitettyjen luetteloiden, kanssa. Näissä rakenteissa satunnaiseen elementtiin pääsy vie lineaarista aikaa, ei säännöllistä vakioaikaa. Ja yhdistämislajittelun luonne tekee siitä helppoa ja nopeaa tällaisille tietorakenteille.Yksi yhdistämislajittelun parhaista ominaisuuksista on sen pieni vertailumäärä. Se tekee O (n * log (n)) vertailumäärän, mutta vakiokerroin on hyvä quicksortiin verrattuna, mikä tekee siitä hyödyllisen, kun vertailutoiminto on hidas operaatio.Yhdistämislajittelun jakamisen ja valloittamisen lähestymistapa tekee siitä myös kätevän rinnakkaiskäsittelyä varten.
Tämän myötä olemme päässeet tämän blogin loppuun 'Kuinka yhdistää lajittelu Pythonissa'. Toivon, että sisältö lisäsi lisäarvoa tietämykseesi Pythonissa. Saadaksesi syvällistä tietoa Pythonista sen eri sovellusten kanssa, voit ilmoittautua livenä 24/7 -tuella ja käyttöikällä.