Dovendo giudicare una parte di codice di programmazione quali criteri adotteresti?
bulletComplessità in tempo
bulletcomplessità in spazio
bulletleggibilità
bulletcorrettezza
bulletinterfaccia utente.

Il problema “Individuare il valore minimo in un vettore” che complessità ha? Lineare: O(n), è necessario scorrere tutto il vettore per individuare il valore minimo

E se il vettore è ordinato? Costante: O(1), il minimo occupa la prima posizione (V[1]!!!)

Stabilisci una classifica per le prestazioni degli algoritmi con complessità in tempo

n=8

n "molto" grande

T1(n)=20n+10

20*8+10=170O(n)

T2(n)=2n2

2*64=128O(n2)

T3(n)=200+n

200+8=208O(n)

T4(n)=2n2+100n

2*64+100*8=928O(n2)

T5(n)=20log2n+300

20*3+300=360O(log2n)

T6(n)=10log2n+n2+20n

10*3+64+20*8=254O(n2)

Inserisci le cifre della tua data di nascita nel vettore V[-, -, -, -, -, -] e poi analizza il codice seguente

Procedure YYYY(Var V: Vettore; N: Integer);Begin if(N > 0) then begin writeln(V[N]); YYYY(V, N-1); end;End;

YYYY(V, 6);
bulletCome si comporta? 1°: YYYY(V, 6) scrive V[6] e chiama ... 2°: YYYY(V, 5) scrive V[5] e chiama ... ... 6°: YYYY(V, 1) scrive V[1] e chiama... 7°: YYYY(V, 0) che ritorna senza ulteriori chiamate ricorsive.
bulletCosa visualizza? Il contenuto del vettore al contrario
bulletQuanto tempo impiega? Ci sono ~4 operazioni elementari (N>0, write, N-1, chiamata) per 6 volte e 1 (N>0) alla fine quindi ~25
bulletQuanto tempo impiega al variare del parametro N? T(n)=4n+1, quindi asintoticamente O(n)

Analizza il codice seguente

Function XXXX(N, R: LongInt): LongInt;Begin if(N < 2) then XXXX:=R Else XXXX:=XXXX(N-2, R+1);End;

Write(XXXX(10, 0));
bulletCome si comporta? 1°: XXXX(10, 0) chiama ... 2°: XXXX( 8, 1) chiama ... 3°: XXXX( 6, 2) chiama ... 4°: XXXX( 4, 3) chiama ... 5°: XXXX( 2, 4) chiama ... 6°: XXXX( 0, 5) restituisce 5
bulletCosa visualizza? Il valore 5, cioè il quoziente della divisione intera per 2 di N
bulletQuanto tempo impiega? Ci sono ~4 operazioni elementari (N<2, N-2, R+1, :=) per 5 volte e 2 (N<2, :=) alla fine quindi ~22
bulletQuanto tempo impiega al variare del parametro N? T(n)=4(n div 2)+2~2n+2, quindi asintoticamente O(n)

- ApPuNtIdIuNiNfOrMaTiCo