Vi leter etter "Truls" i en tabell a() med 1 million (N) element
- hvis a() er usortert må vi lete gjennom alle N element før vi erklærer "ikke funnet"
- hvis a() er sortert stigende kan vi avbryte etter posisjon k hvis a(k) > "Truls"
- hvis a() er sortert kan vi gjøre et binærsøk (kap. 7.4). Ved å sjekke a(N/2), midtveis, kan en erklære halvparten av a() som uinteressant. Hver sjekk halverer søkeområdet. Hvis "Truls" ikke er i tabellen har vi gjort log2 (1,000,000) som er omtrent 20 sjekker (istedetfor å sjekke alle en million).
På tavla stod en tabell R() med { 0, -1, 6, 4 } som innhold. I gruppearbeid laget alle 9 :-( av dere, funksjoner for Sum(R), snitt(R) og median(R).
Function sum (ByValRef a() as Integer) As Integer
' laget av Orjan og Johan
Dim s as Integer = 0
For i as Integer = 0 to a.getUpperBound(0)
s += a(i)
Next
Return s
End Function
Function snitt (ByValRef x() as Integer) as Double
' laget av Orjan og Johan
Return sum(x) / (x.getUpperBound(0)+1)
End Function
Function Median (ByValRef m() as Integer) as Double
' klassen viste meg hva median er (s. 376)
Dim n as Integer = m.getUpperBound(0) + 1
If isPartall(n)
Return ... (ikke ferdig)
Else
Return ...
End If
End Function
Function isPartall (DimByVal y as Integer) as Boolean
If y Mod 2 = 0 ...
End Function
Håpet om å lage funksjonene laveste(R) og høyeste(R) utsettes. Disse funksjonene vil nok kunne legges til tabellomformeren i oblig 5.
Ingen kommentarer:
Legg inn en kommentar