codice:
import java.util.Scanner;
public class mergeSort {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner sc = new Scanner(System.in);
			int[] v;
			int i, n;
			
			System.out.println("Inserisci la lunghezza del vettore v:   ");
			n=sc.nextInt();
			
			v = new int[n];
			
			for(i=0;i<n;i++)
			{
				System.out.println("Digita l'elemento di indice " + i);
				v[i] = sc.nextInt();
			}
			
			ordina(v,0,n-1);
			
			System.out.println("Vettore ordinato:  ");
			
			for(i=0;i<n;i++)
			{
				System.out.println(v[i]+"");
			}
			System.out.println();
	}
	
	void ordina(int[] a, int e, int u)
	{
		int m;
		
		if(e!=u)
		{
			m=(e+u)/2;
			
			ordina(a,e,m);
			ordina(a,m+1,u);
			fondi(a,e,m,u);
		}
	}
	
	void fondi(int[] a, int e, int m, int u)
	{
		int[] b;
		int i, j, k;
		
		b = new int[u-e+1];
		i=e;
		j=m+1;
		k=0;
		while(i<=m && j<=u)
		{
			if (a[i] <= a[j])
			{
				b[k++]=a[i++];
			}else{
				b[k++]=a[j++];
			}
		}
		
		while(i<=m)
		{
			b[k++]=a[i++];
		}
		
		while(j<=u)
		{
			b[k++]=a[j++];
		}
		
		for(k=0;k<=u-e;k++)
		{
			a[k+e]=b[k];
		}
	}

}
l'errore ce l'ho quando nel main richiamo la funzione ordina. Dice che da un metodo statico non posso richiamare un metodo non statico come ordina.
Ho provato a risolvere mettendo private static void ordina, e funziona, ma non capisco il concetto...cioè io ho fatto una scorciatoia..., ma il concetto che ci sta dietro quale è? c'erano altri modi di risolvere?
Grazie a tutti...