Henning Christiansen15/9-2001
Der er ikke ¿velsesgang 17/9 (OB) og 20/9 (Bas), men brug opgaverne som hjemmearbejde og evt. pŒ ¿velserne senere.
Afleveringsopgave for DatC: Opgave 3 nedenfor; afleveringsfrist 1/10 (form og sted aftales med Lars)
Bogens ÒbevisÓ for s¾tning 5.1 er mildest talt obskurt. Vis ved traditionelle induktionsbeviser f¿lgende:
1) 1 + 2 + ... + n = n(n+1)/2
2) 1 + (1+2) + (1+2+3) + ... + (1+2+...+n) = n(n+1)(n+2) / 6
OmformulŽr bogens beskrivelser af W, Q og o (lille 0) vha. af gr¾nsev¾rdier analogt til den mŒde vi i forel¾sningen definerede O:
En funktion T(n) er O(F(n)) sŒfremt T(n)/F(N) ¨ konstant nŒr n¨°
Bogens opgave 5.7 (side 177) spg. a og b.
Opgave handler om repr¾sentation af m¾ngder af tal ved et array udstyret med en t¾ller; vi skitserer det som en klasse sŒledes:
public class talm¾ngde{
public inds¾t(int x) {... inds¾tter x i m¾ngden };
public boolean med_i(int x) {... returnerer true hvis x med i m¾ngden, false ellers};
private int [] indhold = new int [1000000];
private int antal = 0;
}
Problemer hvis arrayet l¿ber fuldt skal ignoreres.
ImplementŽr klassen i to udgaver
1) Tallene inds¾ttes i den r¾kkef¿lge de ankommer (dvs. svarende til r¾kkef¿lgen af kald af inds¾t); med_i metoden implementeres som sekventielt genneml¿b
2) Indholdet af arrayet holdes til enhver tid sorteret. Dette opnŒs ved at inds¾t fungerer sŒledes:
a. f¿rst ops¿ges index hvor det nye tal skal placeres (f.eks. ved bin¾r s¿gning)
b. alle elementer til h¿jre herfor skubbes en position mod h¿jre, sŒ der bliver plads til det nye tal.
Metoden for med_i kan implementeres ved bin¾r s¿gning.
Angiv O for metoderne med_i og inds¾t for begge metoder; hvad siger det om, i hvilke situationer implementation 1 eller 2 er mest velegnede.