Beskrivning
===========
Det mest grundläggande objektet i sammanhanget är själva heapen,
MyBinaryHeap, som implementerats med en enkel Vector som grund. Den
innehåller även en klass PriorityPair som används för att lagra paret
prioritet och data. Heapen kan tolkas som en prioritetskö, och ett
extra lager är onödigt då det främst bara "byter namn" på metoder.
Dessutom finns två Comparators för Integers, en "vanlig" och en som
sorterar talen "baklänges".

Ovan nämnda klass är generisk och kan lagra olika sorters data.
Prioriteterna är dock låsta till att vara Integers.

Längst upp i hierarkin har vi Aktiehandel, själva huvudprogrammet.
Denna klass sköter in- och utdata.

Komplexitet
===========
Köp:   detta innebär att man tar bort roten i det binära elementet,
       vilket är en operation som är O(logn). Detta eftersom man
       ersätter roten med det "sista" elementet, och sedan "bubblar"
       ner detta, vilket som mest kan ta logn operationer eftersom
       trädet är logn nivåer "högt".
Bud:   att lägga in ett nytt bud innebär att man lägger till ett
       element i trädet och sedan "bubblar" upp det. Enligt samma
       motivering som ovan tar deta högst logn operationer, och därför
       är insättning av nya bud O(logn).
Ändring: ändring av bud är O(logn). Detta eftersom borttagning av ett
       godtyckligt element är O(logn) tack vare den ändringsbara heapen
       som gör att sökning är i princip O(1), och eftersom "ändring"
       av ett bud egentligen är borttagning+insättning --- vilket gör
       hela operationen till 2*O(logn) = O(logn).
Utskrift: utskrift av alla element är O(nlogn), eftersom den plockar ut
       översta elementet n gånger, och detta tar O(logn). Vill man bevara
       listan gör det ingen skillnad, eftersom (åter)insättning av alla
       element också är av komplexitet O(nlogn).

Resultat
========
Efter test med filen testdata.txt, som innehåller i princip alla de
fall som kan uppstå, kom vi fram till att programmet fungerar som det
ska. En viktig sak att nämna är att det är *möjligt* för en person att
lägga mer än ett köp- eller säljbud (i det avseendet att programmet
inte kommer att krascha), och att det verkar fungera, men att vi inte
designat programmet för att det ska gå och därmed inte kan garantera
att resultatet blir korrekt.

Observera att indata-filen måste sluta med en nyrad, annars kommer
programmet att vänta på den sista biten av den sista transaktionen.
Detta är en bieffekt av att använda Scanner för att läsa in "tokens".

Även testprogrammet (det gamla, lab2test.jar) visar att programmet
fungerar ordentligt.

