21
Ohjelmointi, palvelimet ja muu edistyneempi käyttö / Vs: Abstraktit tietorakeneet Jono ja Pino Pythonilla&Javalla - Kommentteja kaipaan
« : 22.04.21 - klo:11.24 »
Pienenä tarkennuksena: Vakaalla en tarkoittanut varmatoimista. Englanninkielessä käytetään termiä "stable". Wikipediaa lainaten: "Vakaa (stabiili) lajittelualgoritmi ei vaihda keskenään samansuuruisten alkioiden suhteellista järjestystä, kun taas epävakaa saattaa niin tehdä." Tällä on joskus merkitystä, kun järjestettävillä elementeillä on muitakin ominaisuuksia kuin se, jota käytetään järjestämisen perusteena. Luulisin, että Timsortia käytetään Javassa olioiden järjestämiseen nimenomamaan tämän ominaisuuden vuoksi. Alkeistyyppejä sisältävien taulukoiden (array) järjestämiseen käytetään sen sijaan pikajärjestämistä, joka ei ole vakaa. Alkeistyyppien järjestämisessä vakaudella ei ole merkitystä, ja pikajärjestäminen on jonkin verran tehokkaampaa.
En ole ohjelmoija enkä tunne lainkaan Pythonin tai Javan tyylisuosituksia. En halua siis kommentoida niitä. Toiminnallisuuden suhteen: jos koodi tekee sen, mitä sinä sen haluat tekevän, kaikki on hyvin.
Sinänsä turha huomio, koska suorituskyvyllä ei ole sovelluksessasi merkitystä: Pythonin lista on tehoton tietorakenne jonon perustaksi, koska elementtien poistaminen sen alkupäästä on hyvin tehotonta. Pythonissa on sitä varten tehokkaampi deque-luokka, jossa poistot kummasta tahansa päästä sujuvat vakioajassa (kuten myös lisäykset kumpaan päähän tahansa). En tunne Javaa siinä määrin, mutta luultavasti myös sen ArrayList-olioilla on yhtälailla tehotonta poistaa listan alusta. Voi tietenkin harkita jonon toteuttamista Pythonin listaa tai Javan ArayListia käyttäen, mutta siten, että poistot suoritettaisiin vakioajassa. Se olisi tietenkin monimutkaisempi kuin nykyinen toteutuksesi.
En ole ohjelmoija enkä tunne lainkaan Pythonin tai Javan tyylisuosituksia. En halua siis kommentoida niitä. Toiminnallisuuden suhteen: jos koodi tekee sen, mitä sinä sen haluat tekevän, kaikki on hyvin.
Sinänsä turha huomio, koska suorituskyvyllä ei ole sovelluksessasi merkitystä: Pythonin lista on tehoton tietorakenne jonon perustaksi, koska elementtien poistaminen sen alkupäästä on hyvin tehotonta. Pythonissa on sitä varten tehokkaampi deque-luokka, jossa poistot kummasta tahansa päästä sujuvat vakioajassa (kuten myös lisäykset kumpaan päähän tahansa). En tunne Javaa siinä määrin, mutta luultavasti myös sen ArrayList-olioilla on yhtälailla tehotonta poistaa listan alusta. Voi tietenkin harkita jonon toteuttamista Pythonin listaa tai Javan ArayListia käyttäen, mutta siten, että poistot suoritettaisiin vakioajassa. Se olisi tietenkin monimutkaisempi kuin nykyinen toteutuksesi.