Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    1,175

    [C] shellsort che non ordina...

    Se metto una qualsiasi sequenza lui mi ritorna la sequenza così come gliel'ho passata.

    A array di float
    n numero el. array
    codice:
    void sh_sort(float *A, int n){
    int current, previous, inc, j, k, x, inserted;
    
    inc = n;
      while (inc>1){
        inc = inc / 2;
            for (j=1; j<=inc-1; j++){
                    k = j + inc;
                          while(k<=n){
                               inserted = 0;
                               x = A[k];
                               current = k;
                               previous = current - inc;
                                     while(previous>=j && inserted==1){
                                           if (x<A[previous]){
                                               A[current] = A[previous];
                                               current = previous;
                                               previous = previous - inc;
                                           } else {
                                               inserted = 1;
                                           }
                                     }
                               A[current] = x;
                               k = k + inc;             
                          }
            }                     
      }
    }

  2. #2
    codice:
    void sh_sort(float *A, int n){
    int current, previous, inc, j, k, x, inserted;
    
    inc = n;
      while (inc>1){
        inc = inc / 2;
            for (j=1; j<=inc-1; j++){
                    k = j + inc;
                          while(k<=n){
                               inserted = 0; // non entrerà mai nel while...
                               x = A[k];
                               current = k;
                               previous = current - inc;
                                     while(previous>=j && inserted==1){ // <-- questo while
                                           if (x<A[previous]){
                                               A[current] = A[previous];
                                               current = previous;
                                               previous = previous - inc;
                                           } else {
                                               inserted = 1;
                                           }
                                     }
                               A[current] = x;
                               k = k + inc;             
                          }
            }                     
      }
    }
    codice:
    float *shellsort(float *f, int n)
    {                                           
       int i, j, p;
       float x;                           
       p = n/2;                                 
     
       while (p>0)                              
       {
           for (i = 0; i < n; i++)             
           {
               j = i;
               x = f[i];                      
               while ((j >= p) && (f[j-p] > x))
               {                                
                   f[j] = f[j-p];               
                   j = j - p;                     
               }
               f[j] = x;                      
           }
           p = p/2;                             
        }
        return f;   
    }
    ...Terrible warlords, good warlords, and an english song

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.