Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258

    [c] algoritmo ordinamento per array

    Ciao a tutti,
    mi consigliate un algoritmo semplice ed elegante per ordinare un array? anzi, piu precisamente, viene inserito un valore e se c'è spazio lo inserisce nella giusta posizione spostando gli altri elementi. thk.

  2. #2
    Gli algoritmi di ordinamento non sono "black magic", vengono descritti in qualsiasi testo sulle strutture dati, ad esempio nel Sedgewick e su un numero spropositato di pagine Web. Capisco che chiedere su un forum sia più comodo, ma un pizzico di impegno non guasta mai...

    Senza considerare che la libreria standard del C ti offre la funzione qsort.

    codice:
    /* qsort example */
    #include <stdio.h>
    #include <stdlib.h>
    
    int values[] = { 40, 10, 100, 90, 20, 25 };
    
    int compare (const void * a, const void * b)
    {
      return ( *(int*)a - *(int*)b );
    }
    
    int main ()
    {
      int n;
      qsort (values, 6, sizeof(int), compare);
      for (n=0; n<6; n++)
         printf ("%d ",values[n]);
      return 0;
    }
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    grazie ma non mi piace cosi, perchè a me serve che il valore lo metta subito nel posto giusto, non che mette e poi ordina. I valori per essere spostati, come si fa? con una serie di scambi? mah...

  4. #4
    Gli algoritmi di ordinamento più comuni sono riassunti in queste slide.

    Nel tuo caso, se il vettore è inizialmente vuoto, è sufficiente determinare la posizione in cui inserire l'elemento con dei confronti e procedere ad eventuali scambi.
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

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 © 2025 vBulletin Solutions, Inc. All rights reserved.