Algoritmi e Strutture Dati I – La Spezia Progetto di algoritmi semplici: 1. Scrivere un algoritmo che ricevuto in ingresso un vettore di interi A[1..n] e un intero v, trova un indice i tale che A[i]=v. 2. Usando la figura 1.2 a pag. 4 [CLR] come modello, illustrare il funzionamento di INSERTION-SORT sull’array A = <31,41,59,26,41,58> 3. Riscrivere l’algoritmo INSERTION-SORT per ordinare in ordine decrescente. 4. Realizzare in Java l’algoritmo INSERTION-SORT come procedura ricorsiva. Infatti, per ordinare un vettore A[1..n], possiamo ricorsivamente ordinare A[1..n-1] e poi inserire A[n] nella posizione opportuna. 5. Realizzare in Java l’algoritmo Selection Sort come procedura ricorsiva. 6. Usando la figura 1.3 a pag. 14 [CLR] come modello, illustrare il funzionamento di MERGE-SORT sull’array A = <3,41,52,26,38,57,9,49> 7. Realizzare in Java l’algoritmo MERGE(A,p,q,r) di pag.13 8. Realizzare in Java l’algoritmo Ricerca-Binaria. 9. Osservare che il While-loop presente in INSERTION-SORT esegue una ricerca lineare per trovare la posizione dell’elemento A[j] in A[1..j-1]. Apporterebbe qualche miglioramento alla complessità l’uso di Ricerca-binaria ? 10.Realizzare in Java un algoritmo che calcola la seguente funzione: T(1) = 1, T(2) = 1, T(n) = T(n-1) * T(n-2) + T(n-3) + 1 per n 3 11.Scrivere in pseudo-codice una procedura che calcola il primo e secondo elemento di un insieme. 12.Scrivere una procedura che calcola i primi k elementi di un insieme, dove k è un parametro in input alla procedura.