Salve a tutti. Ho un problema nell'algoritmo del merge: nel ciclo for del metodo merge il contA e il contB vanno fuori dal range. Questi due contatori li uso per scorrere i due array passati come parametri, come posso risolvere? Ecco il codice..
Grasieeee![]()
codice:public class MergeSort { public static int [] merge (int [] a, int [] b) { int contA = 0; int contB = 0; int [] array = new int [a.length + b.length]; for (int i=0; i<array.length; i++) { if (a[contA] <= b[contB]) { array [i] = a[contA]; contA++; } else { array [i] = b[contB]; contB++; } } return array; } public static int [] mergeSort(int [] array) { // array è un array da ordinare int meta = array.length/2; int [] a; int [] b; if (meta == 0) return array; else { a = new int [meta]; b = new int [a.length - meta]; for (int i=0; i<a.length; i++) a[i] = array[i]; for (int i=0; i<b.length; i++) b[i] = array [i+meta]; return merge(mergeSort(a), mergeSort(b)); } } public static void stampa (int [] a) { for (int i=0; i<a.length; i++) { System.out.print ("[" + a[i] + "]"); } } public static void main (String [] args) { int [] a = {1, 3, 5, 7}; int [] b = {2, 4, 6, 8}; int [] array = merge(a, b); stampa(array); } }

Rispondi quotando