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.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]; } } }
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...