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);
		
	}

}