Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [c++] Ordinamento vettore

    ciao a tutti, vorrei un parere da voi, ho fatto un sottoprogramma di una funzione che riordina gli elementi di un vettore in ordine crescente (è possibile adattarlo anche in senso decrescente), vi copio il codice:



    codice:
    void ordi_v3(int vett3[],int riemp3)
    { int i,j; //variabile scorrimento vettore
      int min, temp; //variabile di algoritmo per il ciclo for
     
       for(i=0;i<riemp3;i++)
      { min=vett3[i];
        for(j=i+1;j<riemp3;j++)
        {if (vett3[j]<min)
            { temp=min;
              min=vett3[j];
              vett3[j]=temp;
            }  
        }
        vett3[i]=min;
      }    
    }
    Vi spiego con il primo ciclo analizza tutti gli elementi del vettore e uno alla volta li pone uguale a minimo, poi si apre un secondo ciclo che va a confrontare i restanti elementi del vettore con il minimo...se l'elemento [j] è + piccolo del minimo allora si fa lo scambio e si va avanti..e così via finche non resta tutto ordinato...

    Il parere che volevo sapere da voi, vi sembra giusto come algoritmo di riordinamento o è complicato e c'è un modo migliore per farlo? vi spiego ne ho visti molti, chi usa il while e l'if, chi usa il do-while cn i valori booleani, insomma un po di tutto...il modo più corretto che consuma meno memoria ed è utilizzabile anche in altri casi qual'è?? Grazie

  2. #2
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    I tipi di variabili e costrutti usati secondo me sono dettagli, non cambia molto se ad esempio sostituisci quei due for con due while.L' importante è l' algoritmo.
    E il tuo per essere un bubblesort è implementato bene, fa il tutto in n^2/2 operazioni (all' incirca), senza sprechi di istruzioni o memoria.
    Se vuoi un ordinamento ancora più veloce devi cambiare algoritmo, in particolare il mergesort e il quicksort sono più efficienti, ma non sono più veloci del bubblesort per array molto piccoli.

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.