Pred vami je programček, s pomočjo katerega je prikazano delovanje algoritma za urejanje podatkov z zlivanjem, imenovanega Merge Sort. Programček prikazuje urejanje števil s pomočjo algoritma urejanje z zlivanjem ali Merge Sort. Program je preveden. Originalen program najdete v programu NetLogo. Da pridete do njega, morate klikniti File, nato Model Library, izbrati Computer Science, nato mapo unverified in na končno še Merge Sort.
UREJANJE Z ZLIVANJEM
In order for this to work, this file, your model file (Merge Sort.nlogo), and the file NetLogoLite.jar must all be in the same directory. (You can copy NetLogoLite.jar from the directory where you installed NetLogo.) On some systems, you can test the applet locally on your computer before uploading it to a web server. It doesn't work on all systems, though, so if it doesn't work from your hard drive, please try uploading it to a web server. You don't need to include everything in this file in your page. If you want, you can just take the HTML code beginning with <applet> and ending with </applet>, and paste it into any HTML file you want. It's even OK to put multiple <applet> tags on a single page. If NetLogoLite.jar and your model are in different directories, you must modify the archive= and value= lines in the HTML code to point to their actual locations. (For example, if you have multiple applets in different directories on the same web server, you may want to put a single copy of NetLogoLite.jar in one central place and change the archive= lines of all the HTML files to point to that one central copy. This will save disk space for you and download time for your user.)
Narejeno z NetLogo Izvorna datoteka: Merge Sort.nlogo KAJ JE TO?Ta model je prikaz standardnega algoritma za urejanje, imenovanega 'urejanje z zlivanjem' (merge sort). Ta algoritem razporedi n števil v naraščajočem vrstnem redu. To dosežemo s tem, da razdelimo števila po urejenih skupinah - četah in nato zlivamo manjše čete v večje. Zaporedje je urejeno, ko ostane ena sama četa. Z NetLogo-m je možno veliko enostavneje kot v tem modelu zapisati algoritem za urejanje z zlivanjem, vendar ker ta model predstavlja navidezno delovanje algoritma, je koda veliko bolj zapletena, kot če bi nam model zgolj uredil števila brez prikaza vmesnih korakov. KAKO DELUJE?Začnemo s toliko četami, kolikor imamo števil. Ko algoritem napreduje skozi seznam, zliva pare sosednjih čet. Tako se po vsakem sprehodu skozi seznam, število čet razpolovi. Potek zlivanja dveh čet: To zlivanje ponavljamo za vsak par čet, dokler nam ne preostane ena sama četa. Število korakov, ki so potrebni, da s pomočjo tega algoritma uredimo zaporedje n števil, je najbližje log(n) (z osnovo 2). Vsak korak ima največ n primerjav med števili. Zato je časovna zahtevnost algoritma približno enaka n log(n). Znanstveniki s področja računalništva to navadno zapišejo kot O(n log n), kjer n pove, koliko števil bomo razvrščali. KAKO UPORABLJATI?Število elementov, ki jih želimo urediti, spremenimo s pomočjo drsnika STEVILO_ELEMENTOV. Pritisk na gumb NASTAVI ustvari toliko naključno izbranih elementov, ki jih želimo sortirati, kolikor smo jih določili z drsnikom STEVILO_ELEMENTOV. KORAK (ŠTEVILO) zlije eno število v njegovo novo četo. STVARI, KI JIH JE POTREBNO OPAZITIČete so predstavljene z barvami. Število iz iste čete ima isto barvo. Ko sta dve četi zliti, števila v novi četi dobijo barvo manjšega/večjega elementa. Ali lahko predvidimo zadnjo barvo vseh elementov še pred začetkom sortiranja? Ali bi zlivanje več kot dveh čet hkrati zmanjšalo število korakov pri
urejanju? RAZŠIRJANJE MODELAAli lahko izpopolniš model tako, da elementi med razvrščanjem rišejo poti? Poznamo veliko algoritmov za urejanje zaporedij. Nekaj si jih lahko ogledaš na naslednji povezavi http://en.wikipedia.org/wiki/Sorting_algorithm. Poizkusi zapisati različna urejanja v NetLog-u in za primerjavo uporabi 'BehaviorSpace'. ZNAČILNOSTI NETLOGATa model temelji na seznamih. Upoštevajmo, da NetLogo vsebuje SORT in SORT-BY primitive; navadno uporabljamo te, rajši kot da sami sporograiramo kak algoritem. SORT razvrsti predmete v naraščajočem vrstnem redu; SORT-BY pa prepusti izbiro vrstnega reda uporabniku. |