Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [c] shellsort

  1. #1

    [c] shellsort

    eccone un altro.. 'tradotto' fedelmente dal Pascal, ovviamente mi da problemi nell'ordinamento..

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    void shell_sort(int *, int);
    
    int main() 
      {
        int *vet, n, i;
        
        printf("Quanti elementi vuoi inserire nell'array?: ");
        scanf("%d", &n);
        printf("\n");
        
        vet = (int *) malloc (n*sizeof(int));
    
        for(i = 0; i < n; i++)
          {
            printf("Inserisci il %d elemento dell'array: ", i+1);
            scanf("%d", &vet[i]);
          }
    
        printf("\nGli elementi inseriti nell'array sono: ");
          
        for(i = 0; i < n; i++)
          printf("%d ", vet[i]);
    	
        printf("\n");
    
        shell_sort(vet, n);
    
        printf("\nL'array ordinato e' il seguente: ");
        
        for(i = 0; i < n; i++)
            printf("%d ", vet[i]);
        printf("\n\n");
        system("pause");
        return 0;
     }
    
    
    void shell_sort(int *vet, int n)
     {
      int inc = n, corr, prec, j, k, x;
      bool inserito;
    
      while (inc > 1 )
       {
        inc = inc % 2;
        for (j = 0; j < inc; j++)
         {
          k = j + inc;
          while (k <= n)
           {
            inserito = false;
            x = vet[k];
            corr = k;
            prec = corr - inc;
            while ((prec >= j) && (!inserito))
             {
              if (x < vet[prec])
               {
                vet[corr] = vet[prec];
                corr = prec;
                prec = prec - inc;
               }
              else 
                inserito = true;
             }
             vet[corr] = k;
             k = k + inc;
             }
            }
        }
     }
    @@@

  2. #2
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    void Shellsort(int *array, int nr){

    int i, j, k, dist, distArray[3], temp;
    *(distArray)=3; *(distArray+1)=2; *(distArray+2)=1;


    for(k=0; k < 3; k++){
    dist = *(distArray+k);
    for(i = dist; i < nr; i++){
    temp = *(array+i);
    for(j = i - dist; (temp < *(array+j)) && (j >= 0); j = j - dist)
    *(array+(j+dist)) = *(array+j);
    *(array+(j+dist)) = temp;
    }
    }

    for(i = 0; i < nr; i++)
    printf("%d ", *(array+i));
    }

    array è il vettore da ordinare, nr il numero di elementi
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  3. #3
    perdonami, ma quello che hai postato tu non ha attinenza col mio.. io avrei proprio bisogno che mi si trovasse l'errore nel mio, se è possibile. grazie cmq.
    @@@

  4. #4
    allora? non mi aiuta nessuno?
    @@@

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.