1. Associa ogni problema sui vettori alla sua complessità in tempo attesa

bulletRicerca sequenziale: O(n), ...
bulletRicerca binaria: O(log2n), ...
bulletCopiare: O(n), sono coinvolti n elementi
bulletAggiungere un elemento alla fine: O(1), numero di operazioni costante
bulletAggiungere un elemento all’inizio:
bulletO(1), numero di operazioni costante se il primo elemento viene copiato alla fine e il nuovo inserito in prima posizione
bulletO(n), se gli elementi presenti vengono "traslati" in avanti di una posizione per "fare spazio"
bulletCopiare una matrice quadrata nxn: O(n2), sono coinvolti n2 elementi

2. Risolvi il problema: "Quante coppie ordinate sono presenti in un vettore?".

Per coppia ordinata intendo due elementi adiacenti con il primo valore minore o uguale del secondo. Se il vettore è V = (1, 3, 2, 1, 3, 7) sono presenti 3 coppie ordinate di elementi adiacenti: 1°: (1, 3), 4°: (1, 3) e 5°: (3, 7).

function COPPIEORD(V: Vettore; N: Integer): Integer;

funzione intera con parametri IN il vettore e il numero di elementi.

È necessario scandire il vettore e per ognuna delle N-1 coppie testare se è ordinata o meno; se è ordinata si incrementa un contatore che sarà il valore di ritorno della funzione.

Function COPPIEORD(V: Vettore; N: Integer): Integer;Var i, CONTA: Integer;Begin CONTA:=0; for i:=1 to N-1 do if(V[i] <= V[i+1])then Inc(CONTA); CONTAORD:=CONTA;End;

N-1 test, con N-1 incrementi al max, quindi O(n)

3. Dovendo risolvere il problema: "Quante volte compare un elemento all’interno di un vettore ordinato?", discuti i possibili algoritmi risolutivi in funzione della loro complessità in tempo.

bulletCon una scansione sequenziale "for ..." il tempo di attesa è n
bulletCon una scansione parziale "while... con condizione (V[i] <= X)" il tempo di attesa diventa n/2 nel caso medio...
bulletCon una ricerca binaria si potrebbe individuare l'elemento, O(log2n), e poi con due scansioni "parziali" conteggiare gli elementi uguali adiacenti. Se il vettore è "grande" e l'elemento è ripetuto "poche" volte si ha un vantaggio significativo.

- ApPuNtIdIuNiNfOrMaTiCo