1 / 16

Merge – Sort - Join

Merge – Sort - Join. Algoritmid ja andmestruktuurid Loeng 5. Merge – kahe listi ühendamine. List1 List2 List3 X = List1.Esimene Y = List2.Esimene While X or Y Case X = Y Insert List3(X) X.Next Y.Next Case X < Y or Y=Null Insert List3(X) X.Next Case X > Y or X = Null Insert List3(Y)

Download Presentation

Merge – Sort - Join

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Merge – Sort - Join Algoritmid ja andmestruktuurid Loeng 5

  2. Merge – kahe listi ühendamine • List1 List2 List3 • X = List1.Esimene • Y = List2.Esimene • While X or Y • Case X = Y • Insert List3(X) • X.Next • Y.Next • Case X < Y or Y=Null • Insert List3(X) • X.Next • Case X > Y or X = Null • Insert List3(Y) • Y.Next • Loop

  3. Merge keerukus ja eeldus • Mõlemad listid peavad olema sorteeritud • Keerukus lineaarne • O = O(N1) + O(N2)

  4. Sorteerimine • List või massiiv sorteerida • Põhilised operatsioonid • Elementide vahetus • Massiivi (listi) tükeldus

  5. Kõige lihtsam sorteerimine • Otsi kõige väiksem element (N) • Tõsta see sorteeritud massiivi • Korda N korda (N*N) või (N*N/2) • Ruutkeerukusega algoritm

  6. Pendelsort • X = List.Esimene • While X ei ole viimane • If X > X.Next • Swap (X ja X.Next) • IF X on esimene • X = X.Next • Else • X = X.Prior • Else • X = X.Next • Loop • ISESEISEV ÜLESANNE – Leia keerukus

  7. Merge sort • Lõikame sorteeritava kaheks • Sorteerime pooled eraldi • Ühendame (merge) • Keerukus • Sort(N) = 2 * Sort(N/2) + 2N • Sort(2) = 1 Iseseisev ülesanne – leia keerukus (N log N) http://www2.ics.hawaii.edu/~qizhang/ics665/mergesort.html

  8. Kiirsort – Quick Sort • Võtame suvalise elemendi (telje) • Jaotame • kõik teljest suuremad paremale • Kõik teljest väiksemad vasakule • Sorteerime mõlemad pooled • Ühendame Iseseisev ülesanne – leia keerukus (N log N) http://ciips.ee.uwa.edu.au/~morris/Year2/PLDS210/qsort.html

  9. Sorteerimisalgoritmide võrdlusi http://www.cs.rit.edu/~atk/Java/Sorting/sorting.html http://www.cs.ubc.ca/spider/harrison/Java/ • Jaotage ära – homme iga üks teeb ettekande ühest sorteerimisalgoritmist (toob välja pointi)

  10. Ühendamine – join • On kaks (või enam) listi, massiivi, puud, andmebaasitabelit • Tuleb leida kokkulangevate võtmetega paarid

  11. Variant 1 – Inner Loop • Esimese massiivi igale elemendile • Leiame paarilise(d) teisest • Keerukus • Mõlemad sorteerimata O(N1 * N2) • Teine sorteeritud O(N1*N2 / 2) • Ruutkeerukusega ülesanne

  12. Variant 2 – Merge • Mõlemat hulka töödeldakse paralleelselt • Keerukus lineaarne • Eeldus sorteerimine • N * Log N + M * Log M + (N+M)

  13. Variant 3 – Hash • Üks hulk häshitakse • Teisele leitakse paarilised häshist • Keerukus lineaarne • Eeldus küllaldane mälu

  14. Homme – harjutus • Ei tee harjutust ise • Uurime valmis sorteerimisalgoritme • Homme ootan erinevate sorteerimisalgoritmide analüüse (too välja idee) • Korralik ettekanne läheb kirja kodutööna

  15. Kõik tänaseks

More Related