Esercizi sulla complessità computazionale Si scriva la complessità computazionale approssimativa (considerando nel comportamento asintotico l’ordine dell’infinito) in funzione della dimensione n del problema, per ciascuno dei seguenti algoritmi. 1) i = 0; while (i < n) i = i + 1; 2) 3) i=0; while (i*i < n) i = i + 1; 4) Il codice è scritto in Ansi C quindi printf sta per cout mentre scanf sta per cin. 5) La dimensione dell’input è n int f5 (int A [], int n, int x) { int i=0; int j=n - 1; while (i <= j) { int k=(i+j)/2; if (x == A[k]) return 1; if (x < A[k]) j= k - 1; else i= k+1; } return 0; } 6) Dato il seguente problema: “Dato un array di n numeri reali (solo positivi o negativi, lo zero è escluso), progettare un algoritmo efficiente che posizioni tutti gli elementi negativi prima di tutti gli elementi positivi. Calcolare la complessità dei seguenti algoritmi scritti in pseudo-codifica: Funzione SeparaPositiviNegativi(A, B) int pos = 1; neg = n; FOR i = 1 TO n DO IF A[i]>0 THEN B[pos] = A[i]; pos++; ELSE B[neg] = A[i]; neg--; Funzione SeparaPositiviNegativi2(A) i = 1; j = n; WHILE (i < j) WHILE (A[i]>0 AND i < j) DO i++; WHILE (A[j]<0 AND i < j) DO j--; SCAMBIA(A[i], A[j]); i++; j--; 7) for (int i=0; i<n; i++) for(int j=0; j<n; j++) for (int z=0; z<n; z++) cout<<i+j+z; 8) for (int i=0; i<n; i++) for(int j=i; j<n; j++) cout<<”Ciao”; 9) Si discuta la funzione cc per il seguente problema: “trovare la somma di n valori di un array”. 10) Si discuta la funzione cc per il seguente problema: “dato un vettore di N elementi compresi tra 0 e 9, si trovi la cifra (tra 0 e 9) maggiormente presente nel vettore”. 11) Si discuta la funzione cc per il seguente problema: “dato un vettore di N elementi interi, verificare se esiste una combinazione di elementi del vettore (es. 2 elementi, 3 elementi, …) tale che la somma di tali elementi dia K”.