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
Qua per esempio non riesco a capire materialmente cosa fa il metodo mergecodice: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); } }

Rispondi quotando