Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Algoritmi di sort

  1. #1

    Algoritmi di sort

    Qualcuno saprebbe dirmi/darmi l'algoritmo di insertion sort ricorsivo (funzionante)???
    Linguaggi : C/C++
    SO: WinXP, Slack 10

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    L'algoritmo Insertion-Sort non è ricorsivo: è iterativo!! (Certo, si potrebbe disquisire sull'iteazione vista come ricorsione di coda, ma non mi sembra il caso).

    Comunque, questo è l'algoritmo Insertion-Sort: (funzionante implica un linguaggio di programmazione, che tu non hai specificato!)
    codice:
    Pseudo-codice:
    
    A: array di elementi
    Length: funzione che restituisce la lunghezza dell'array passato come argomento
    
    Insertion-Sort(A) {
       for j=2 TO Length(A) {
          key = A[j]
          i = j - 1
          while ((i > 0) AND (A[i] > key)) {
             A[i + 1] = A[i]
             i = i - 1
          }
          A[i + 1] = key
       }
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Originariamente inviato da LeleFT
    L'algoritmo Insertion-Sort non è ricorsivo: è iterativo!! (Certo, si potrebbe disquisire sull'iteazione vista come ricorsione di coda, ma non mi sembra il caso).

    Comunque, questo è l'algoritmo Insertion-Sort: (funzionante implica un linguaggio di programmazione, che tu non hai specificato!)
    codice:
    Pseudo-codice:
    
    A: array di elementi
    Length: funzione che restituisce la lunghezza dell'array passato come argomento
    
    Insertion-Sort(A) {
       for j=2 TO Length(A) {
          key = A[j]
          i = j - 1
          while ((i > 0) AND (A[i] > key)) {
             A[i + 1] = A[i]
             i = i - 1
          }
          A[i + 1] = key
       }
    }
    Ciao.

    Grazie, ma l'iterativo gia lo conosco benissimo!!!!

    Devo creare una versione con le liste e con questa struttura la versione ricorsiva c va a nozze!!! Cmq il linguaggio è il C!!!
    Linguaggi : C/C++
    SO: WinXP, Slack 10

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    73
    Versione Ricorsiva
    // Programma Insertion Sort ricorsiva
    #Include <Stdio.h>
    int n=5;
    array= ( int*) calloc ( n, size of ( int ) ) ;
    Main()

    {
    .
    .
    .
    Insertion Sort ( & array , n ); /* Chiamata alla procedura Insertion sort con passaggio di valori per indirizzo e per valore */

    Void Insertion Sort ( int * a, int n )
    {
    int j, pos min ;
    If (n = =1)
    Return;
    pos=0;
    min= *a;
    for ( j=0 ; j> n-1 ; j++ ) /* primo ciclo for che ricerca il piu piccolo elemento e lo mette in cima all’array*/

    {
    if *(a+j)< Min
    {
    Min= *(a+j);
    pos=j;
    }
    }
    *(a+pos)=*a;
    *a= min;
    j=2;
    do /* ciclo che confronta il terzo elemento dell array con il secondo e ove ci sia uno scambio da fare lo effettua */
    {

    if *( a+j) < *(a+(j-1))
    {
    Min= *( a+j);
    *(a+j) = *(a+(j-1));
    *(a+(j-1))=min;
    }

    j++;
    }
    while( j = =n)

    insertion sort ( & (a+1), n-1 ); /* chiamata ricorsiva alla stessa funzione con passaggio di un nuovo array piu piccolo di un elemento quello iniziale che gia è assoldato essere il piu piccolo*/
    return;
    }



    eheh sento l'aria di un esame eh?

  5. #5
    Originariamente inviato da cipo_mad
    Versione Ricorsiva
    // Programma Insertion Sort ricorsiva
    #Include <Stdio.h>
    int n=5;
    array= ( int*) calloc ( n, size of ( int ) ) ;
    Main()

    {
    .
    .
    .

    eheh sento l'aria di un esame eh?
    Si!!! Grazie...
    Linguaggi : C/C++
    SO: WinXP, Slack 10

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.