Datastrukturer och databaser för STS

och

Programmeringsteknik II för F

Arne Andersson


Laborations- och programmeringsuppgift 1: en jämförelse av datastrukturer för lagring och sökning.


Java-dokumentation hittar du på http://java.sun.com/docs/
Uppgifter består av att jämföra tre olika datastrukturer för attt lagra data. De tre metoderna är Exakt hur dessa fungerar kommer att gås igenom under kursen. Du behöver dock inte känna till detaljerna för att göra uppgiften. Alla tre datastrukturer finns implementerade i javabiblioteket. Du skall använda dig av följande klasser (kolla detaljerna i Java-dokumentationen): I klassen System finns en metod currentTimeMillis(), som returnerar nuvarande tid i millisekunder (vad betyder nuvarande tid?). I klassen Random finns slumptalsfunktioner. Även klasserna String och Character innehåller metoder som kan vara användbara.

Uppgiften är att genomföra följande experiment:

  1. Upprepa för n = 10, 100, 1000, .... så långt datorn klarar på rimlig tid (under c:a en halvtimme):
    1. Skapa en vektor (array) med n objekt. Varje objekt skall innehålla
      • en söknyckel (key) som i detta fall är en slumpmässigt genererad sträng. Varje sträng skall vara 10 tecken lång och innehålla bokstäver (stora och små) och siffror, som exempelvis "g5AkL88KGx".
      • ett datavärde (value) som är ett slumpmässigt genererat heltal mellan 0 och 1000. Värt att notera är att put tar två argument, en nyckel och ett datavärde, som båda måste vara objekt. Ett rent tal (en int) är inte ett objekt. Tips: Klassen Integer är användbar.
    2. För varje av de tre datastrukturerna (lista, träd, hashtabell) genomför följande:
      1. Starta tidmätningen.
      2. Sätt in de n strängarna.
      3. Stoppa tidmätningen, registrera tiden.
      4. Starta tidmätningen.
      5. För varje sträng, fråga om den finns i mängden.
      6. Stoppa tidmätningen, registrera tiden.
      7. Starta tidmätningen.
      8. Tag bort de n strängarna, en efter en.
      9. Stoppa tidmätningen, registrera tiden.
  2. När expeimenten är genomförda, presentera resultatet i en tabell.

Tänk på

När ett Random-objekt skapas initieras dess slumptalsfrö med ett värde från klockan. Om man skapar flera Random-objekt i tät följd kommer därför flera av dem att få samma slumpfrö och därför generera samma slumptalsföljd. För att garantera att era nycklar blir unika bör ni därför se till att inte skapa flera Random-objekt i en loop eller liknande. Allra bäst är naturligtvis om det bara finns ett random-objekt som gäller för hela programmet.
Läs mer om slumptal här.