Jsort

JSort je algoritam koji radi u mestu i dva puta koristi hip da donekle sortira niz, a onda primeni sortiranje umetanjem. Jsort se pripisuje Jason Morrison-u.[1]

Prvim prolaskom kroz niz, kreira se hip sa najmanjim elementom u korenu, koji je prvi član niza. Drugi prolazak kroz niz radi obrnuto, kreira hip sa najvećim elementom u korenu, koji je poslednji element u nizu. Donekle sortiran niz se dalje sortira umetanjem. S obzirom da se sortiranje vrši umetanjem, dva prolaska služe da se kreira hip, što dovodi do uštede.

Kreiranjem hipa, brzo se dobije delimično sortiran niz, jer se elementi mogu pomeriti čak za polovinu dužine niza. Velika je šansa da su elementi blizu korena sortirani jer se mali broj elemenata međusobno poredi. Što se više odaljavamo od korena, sve je manja šansa da su elementi sortirani jer se ne porede jedni sa drugima već samo sa roditeljima. Stoga, elementi koji su listovi su najverovatnije nesortirani, što može dovesti do toga da sortiranje umetanjem dugo traje.

Drugi prolazak obrće hip i stavlja koren na poslednje mesto u nizu. To takodje menja logiku hipa, tako da je u korenu najveći element. Redosled elemenata u drugom prolasku je i dalje isti, manji blizu prve pozicije u nizu, veliki blizu poslednje, ali drugi prolazak radi sa onim elementima sa kojima nije prvi prolazak (onima koji su pri kraju niza). Ova dva prolaska zajedno delimično sortiraju niz. Konačno, sortiranje umetanjem može da se izvrši relativno brzo. Složenost je i dalje O(n2).

Reference

  1. ^ Code for a JSort visualization, in Java.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.