1 / 9

Algoritmi

Algoritmi. Lo strano mondo degli algoritmi di ordinamento. I Tipi Di Algoritmo Di Ordinamento. SELECTIONSORT INSERTIONSORT BUBBLESORT QUICKSORT MERGESORT HEAPSORT COUNTINGSORT BUCKETSORT. SELECTIONSORT. for ( i = 0 ; i < ( n - 1 ) ; i++ ) { posizione = c;

fineen
Télécharger la présentation

Algoritmi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Algoritmi Lo strano mondo degli algoritmi di ordinamento

  2. I Tipi Di Algoritmo Di Ordinamento • SELECTIONSORT • INSERTIONSORT • BUBBLESORT • QUICKSORT • MERGESORT • HEAPSORT • COUNTINGSORT • BUCKETSORT

  3. SELECTIONSORT • for ( i = 0 ; i < ( n - 1 ) ; i++ ) • { • posizione = c; • for ( d = i + 1 ; d < n ; d++ ) • { • if ( array[posizione] > array[d] ) • position = d; • } • if ( posizione != c ) • { • scambio = array[i]; • array[i] = array[position]; • array[posizione] = scambio; • } • }

  4. MERGE SORT • Se la sequenza da ordinare ha lunghezza 0 oppure 1, è già ordinata. Altrimenti: • a sequenza viene divisa in due metà (se la sequenza contiene un numero dispari di elementi, viene divisa in due sottosequenze di cui la prima ha un elemento in più della seconda) • Ognuna di queste sottosequenze viene ordinata, applicando ricorsivamentel'algoritmo • Le due sottosequenze ordinate vengono fuse . Per fare questo, si estrae ripetutamente il minimo delle due sottosequenze e lo si pone nella sequenza in uscita, che risulterà ordinata

  5. BUBBLESORT • for (c = 0 ; c < ( n - 1 ); c++) • { • for (d = 0 ; d < n - c - 1; d++) • { • if (array[d] > array[d+1]) • { • scambio= array[d]; • array[d] = array[d+1]; • array[d+1] = scambio; • } • } • }

  6. QUICKSORT • L'idea base può esprimersi agevolmente in termini ricorsivi. Ad ogni stadio si effettua un ordinamento parziale di una sequenza di oggetti da ordinare. Assunto un elemento come perno dello stadio, si confrontano con esso gli altri elementi e si posizionano alla sua sinistra i minori e a destra i maggiori, senza tener conto del loro ordine. Dopo questo stadio si ha che il perno è nella sua posizione definitiva. • Successivamente si organizzano nuovi stadi simili nei quali si procede all'ordinamento parziale delle sottosequenze di elementi rimasti non ordinati, fino al loro esaurimento.

  7. INSERTIONSORT • for (c = 1 ; c <= n - 1; c++) { • d = c; • while ( d > 0 && array[d] < array[d-1]) { • t = array[d]; • array[d] = array[d-1]; • array[d-1] = t; • d--; • } • }

  8. HEAPSORT • La struttura di dati heap è un vettore A che puo’: • essere interpretato come un albero binario • completo B, tranne al più l’ultimo livello. • • Gli n nodi di B corrispondono alle posizioni 1..n • del vettore A, nell’ordine in cui si incontrano i • nodi visitando B per livelli crescenti ed • esaminando da sinistra a destra i nodi dello stesso • livello.

  9. BUCKETSORT • L'algoritmo è semplice ed intuitivo: si prepara un array C di dimensione pari a m (cioè al valore massimo che può essere nell'array) con C[i] che rappresenta la frequenza dell'elemento i nell'array di partenza A. Si visita l'array A aumentando l'elemento di C corrispondente. Dopo si visita l'array C in ordine e si scrivono su A, C[i] copie del valore i.

More Related