Professional Documents
Culture Documents
Tent ID1018 Apr 2021 Lösning
Tent ID1018 Apr 2021 Lösning
Tentamen: lösning
Uppgifter: lösningar
Uppgift 1 (3 poäng + 3 poäng)
a) (3 poäng)
u
3 4 5 1 2
b) (3 poäng)
v[0]
0 3 6 9
v v[1]
1 4 7 10
v[2]
2 5 8 11
int pos = 0;
while (pos < cars.length && !cars[pos].getType ().equals (type))
pos++;
if (pos < cars.length)
{
car = cars[pos];
double price = car.getPrice ();
pos++;
while (pos < cars.length)
{
if (cars[pos].getType ().equals (type) &&
cars[pos].getPrice () < price)
{
car = cars[pos];
1
ID1018 Programmering I Tentamen: lösning av Fadil Galjic apr 2021
return car;
}
b) (3 poäng)
public static Car[] selectCars (Car[] cars, double minPrice, double maxPrice)
{
int countCars = 0;
for (Car car : cars)
if (car.getPrice () >= minPrice && car.getPrice () <= maxPrice)
countCars++;
return selectedCars;
}
c) (3 poäng)
Car[] cars = { new Car("Audi", 210),
new Car("BMW", 220),
new Car("Volvo", 180),
new Car("Mazda", 190),
new Car("BMW", 230),
new Car("Mazda", 180) };
ms chars
L o v e
b) (3 poäng)
public void addFirst (char ch)
2
ID1018 Programmering I Tentamen: lösning av Fadil Galjic apr 2021
{
char[] newChars = new char [this.chars.length + 1];
newChars[0] = ch;
for (int i = 0; i < this.chars.length; i++)
newChars[i + 1] = this.chars[i];
this.chars = newChars;
}
c) (3 poäng)
public void deleteCharAt (int index)
throws java.lang.IndexOutOfBoundsException
{
if (index < 0 || index >= this.chars.length)
throw new java.lang.IndexOutOfBoundsException ("bad index: " + index);
this.chars = newChars;
return comp;
}
b) (3 poäng)
public static <T extends ComparableShape<T>> T min (T[] shapes)
{
if (shapes.length == 0)
throw new java.lang.IllegalArgumentException ("no shapes");
T minShape = shapes[0];
for (int i = 1; i < shapes.length; i++)
if (shapes[i].compareTo (minShape) == -1)
minShape = shapes[i];
return minShape;
}
c) (3 poäng)
Rectangle[] rectangles = { new Rectangle (2, 4),
new Rectangle (5, 2),
new Rectangle (7, 6),
new Rectangle (4, 1),
new Rectangle (8, 9) };
3
ID1018 Programmering I Tentamen: lösning av Fadil Galjic apr 2021
if (maxPos != pos)
{
e = sequence[pos];
sequence[pos] = sequence[maxPos];
sequence[maxPos] = e;
}
}
}
b) (4 poäng)
För att bestämma det element som ska ligga på den första positionen, utförs n – 1 elementjämförelser. För att bestämma det
element som ska ligga på den andra positionen utförs n – 2 jämförelser. Antalet jämförelser minskar med 1 för varje ny
position. Det totala antalet jämförelser är:
(n – 1) + (n – 2) + … + 1 = n(n – 1) /2
Motsvarande komplexitetsfunktion är:
t(n) = n(n – 1) /2
t(n) = n2/2 – n/2
För stora n dominerar termen med n2. Därför:
t(n) ϵ θ(n2)
Algoritmen är kvadratisk när det gäller antalet elementjämförelser.
Man sätter n – 1 element på rätt plats, och därmed sorteras alla element. När ett element sätts in på rätt ställe, byter det plats
med det element som redan finns där. Om ett element redan finns på rätt position, behöver det inte byta plats med något annat
element. Det betyder att i värsta fall utförs n – 1 elementutbyten.
Algoritmens tidskomplexitet i värsta fall, när det gäller antalet elementutbyten, kan ges med följande komplexitetsfunktion:
w(n) = n – 1
w(n) ϵ Θ(n)
Algoritmen är linjär när det gäller antalet elementutbyten i värsta fall.