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

    [java] Metodo del merge Merge sort

    Anche per il merge sono nella stessa barca cerco aiuto
    Posto il codice(Rigorosamente fatto da me visto di la e di qua ma non capendo il perchè), avendo capito il procedimento che fa
    Posto il codice
    codice:
    public class MergeSort 
    { 
      public static void stampaVettore(int[] v, String messaggio) 
      { 
        System.out.println(messaggio); 
        for(int i=0; i<v.length; i++) 
        { 
          System.out.println(v[i]); 
        } 
         return; 
      }  
        public static void merge(int[] a, int from, int mid, int to) 
        { 
         int n = to - from + 1; // qua non riesco a capire perchè? 
         int[] b = new int[n]; 
         int i1 = from; 
         int i2 = mid + 1; 
         int k = 0; // perchè questo k 
         while (i1 <= mid && i2 <= to) 
         { 
           if (a[i1] < a[i2]) 
           { 
             b[k] = a[i1]; 
             i1++; 
            } 
             else 
             { 
               b[k] = a[i2]; 
               i2++; 
              } 
                k++; 
            } 
              if(i2>to) 
               while (i1 <= mid) 
               { 
                 b[k] = a[i1]; 
                 i1++; 
                 k++; 
               } 
                else 
                 while (i2 <= to) 
                 { 
                   b[k] = a[i2]; 
                   i2++;
                   k++; 
                  } 
                    for (k = 0; k < b.length; k++) 
                      a[from + k] = b[k]; 
       } 
         public static void mergeSort(int[] a, int from, int to) 
         { 
            if (from == to) 
             return; 
            int mid = (from + to) / 2; 
            mergeSort(a, from, mid); 
            mergeSort(a, mid + 1, to); 
            merge(a, from, mid, to); 
          }  
           public static void sort(int[] a) 
           { 
             mergeSort(a, 0, a.length - 1); 
           } 
             public static void main(String[] args) 
             { 
               int[] vettore ={10, 20, 15, 37, 21, 33, 22, 1, 120, 2, 11, 119};
               stampaVettore(vettore, "array non ordinato"); 
               sort(vettore); 
               System.out.println(); 
               stampaVettore(vettore, "array ordinato"); 
               System.exit(0); 
             } 
    }
    Qua per esempio non riesco a capire materialmente cosa fa il metodo merge

  2. #2
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3

    problema semi risolto ma va bene

    Anche qua tu e anche qua grazie ahahaha ciao

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.