Test di autovalutazione 16 |
44 |
32 |
29 |
11 |
9 |
7 |
0 |
1 |
2 |
3 |
4 |
5 |
12 confronti
4 confronti
10 confronti
15 confronti
Domanda 2 :
Volendo ordinare il vettore in Fig. 2, in senso crescente al crescere degli indici del vettore, con l'algoritmo selection-sort , al secondo passo della seconda iterazione, quale vettore semi-ordinato avremo.
Fig. 2
44 |
32 |
29 |
11 |
9 |
7 |
4 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
4 | 7 | 9 | 29 | 11 | 44 | 32 |
4 | 7 | 29 | 44 | 9 | 7 | 11 |
4 | 29 | 44 | 32 | 11 | 9 | 7 |
32 | 44 | 11 | 29 | 7 | 4 | 9 |
Domanda 3 :
Il seguente programma cosa fa all'array VET ?
#include<stdio.h>
#define N 10
main( )
{
int VET[N] = {2, 5, 6, 34, 11, 44, 33, 89, 68, 36 };
int i, k, vecchio;
for (i=0; i<DIM; i++)
printf (“\n%d”, VET[i] );
for (k=1; k<N ; k++)
for (i=0;i<=N -1 ; i++)
if (VET[i] >VET[i+1] )
{
vecchio = VET[i];
VET[i] = VET[i+1];
VET[i+1] = vecchio;
}
return 0;
}
lo ordina in senso decrescente,solo parzialmente, con il bubble-sort
lo ordina in senso crescente utilizzando il bubble-sort
lo ordina in senso decrescente utilizzando la selection-sort
lo ordina in senso crescente utilizzando la selection-sort
Domanda 4 :
La funzione seguente cosa fa all'array A passatole come parametro essendo n il numero di elementi dell'array A ?
void selection_sort(int A[ ], int n)
{
int i, j, i_minimo;
for
( i=0;i<n-1; i++) /*iterazione*/
{
/*ricerca della componente minima fra A[i] e A[n]*/
i_minimo=i;
for(j=i+1;j<n;j++) /*passi*/
if(A[j]<A[i_minimo]) /*confronto*/
scambia(A[j],A[i_minimo] );
}
}
non riesce ad ordinarlo in senso crescente poiche' manca l'istruzione i_minimo= j; dopo il confronto.
lo ordina in senso crescente correttamente
non riesce ad ordinarlo in senso crescente poiche' il confronto dovrebbe essere if( A[j]>=A[i_minimo] )
lo ordina in senso decrescente correttamente
Domanda 5
Volendo ordinare il vettore in Fig. 3, in senso crescente al crescere degli indici del vettore, con l'algoritmo bubble-sort , al secondo passo della seconda iterazione quale vettore semi-ordinato avremo.
Fig. 3
4 |
32 |
29 |
11 |
9 |
7 |
44 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
4 | 32 | 11 | 29 | 7 | 44 | 9 |
4 | 11 | 29 | 9 | 7 | 32 | 44 |
32 | 44 | 11 | 29 | 7 | 4 | 9 |
4 | 9 | 11 | 29 | 7 | 32 | 44 |
Domanda 6 :
Avendo un array di (2^20 +1) interi, ordinato in senso decrescente al crescere degli indici, quanti confronti occorrono nel caso peggiore, con la ricerca binaria (adattata a tale caso) per trovare un elemento, che sappiamo essere in esso presente.
almeno 50 confronti
al massimo 15 confronti
21 confronti
51 confronti
Domanda 7 :
A quale compito assolve la seguente funzione funz:
int funz (int elemento[ ], int cont, int chiave)
{
register int k;
for(k=0;
k<cont; k++)
if(chiave==elemento[k] ) return(k);
else return( -1); }
restituisce l'indice dell'array in cui e' contenuto l'intero cercato con la ricerca sequenziale oppure -1 se non trova l'intero richiesto
restituisce l'elemento dell'array in cui e' contenuto l'intero cercato, con la ricerca sequenziale, oppure -1 se non trova l'intero richiesto
restituisce l'indice dell'array in cui e' contenuto l'intero cercato con la ricerca binaria oppure -1 se non trova l'intero richiesto
restituisce l'elemento dell'array in cui e' contenuto l'intero cercato, con la ricerca binaria, oppure -1 se non trova l'intero richiesto
Domanda 8 :
Volendo cercare l'elemento 14 in un array, a, cosi ordinato come in Fig. 4, dopo quanti passi, della istruzione while della ricerca binaria, lo riusciamo ad individuare essendo noti i parametri della funzione di ricerca binaria a,x,n :
Fig. 4 a
5 |
10 |
11 |
12 |
13 |
14 |
18 |
5
3
2
4
_____________________________________________________
_____________________________________________________
_____________________________________________________