n° 219
Novembre 2017
Maggio 20, 2018, 11:53:00 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
Pagine: [1]   Vai giù
  Stampa  
Autore Discussione: algoritmo Mergesort  (Letto 965 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
giuliano91
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 1


Mostra profilo E-mail
« inserita:: Ottobre 18, 2012, 03:02:40 »

Salve a tutti , sono nuovo del forum  Sorriso

ho provato a risolvere il  noto algoritmo di ordinamento chiamato Mergesort nel modo più semplice possibile, ma non riesco a capire perchè non funziona Che?!?. Qualche consiglio?
posto il codice.

Codice:
public class Mergees {
public static void mergesort(int[] a,int l,int r){
if(l>=r)
return;
int m=(l+r)/2;
mergesort(a,l,m);
mergesort(a,m+1,r);
merge(a,l,m,r);

}
public static void merge(int a[],int l,int m,int r){
int i,j,k;

k=0;

i=l;
j=m+1;
int b[]=new int[a.length];
while((i<=m) && (j<r)){
if(a[i]<a[j]){
b[k]=a[i];
i++;
k++;
}else{
b[k]=a[j];
j++;
k++;
}


}
while(i<=m){
b[k]=a[i];
k++;
i++;
}
while(j<r){
b[k]=a[j];
k++;
j++;
}
for(int z=0;z<a.length;z++){
System.out.println("a[z]"+a[z]);
}

}
public static void main(String[] s){
int[] b=new int[5];
b[0]=5;
 b[1]=9;
      b[2]=2;
      b[3]=7;
      b[4]=1;
      mergesort(b,0,5);
    
      }

}

Grazie in anticipo per la disponibilità Felice

Registrato
ctraversa
Jr. Member
**

Karma: +14/-9
Scollegato Scollegato

Messaggi: 167


Mostra profilo
« Risposta #1 inserita:: Ottobre 18, 2012, 04:13:18 »

Ciao giuliano.
Cosa stai utilizzando per scrivere questa classe java? Di sicuro non Netbeans o Eclipse od un qualunque altro IDE con un minimo di correzione automatica della sintassi e/o degli errori. Altrimenti immediatamente ti sarebbero stati segnalati gli errori dopo il while nel metodo merge che ti riporto come commento.
Codice:
while ((i <= m) && (j < r)) {
  if (a < a[j]) { //The operator < is undefined for the argument type(s) int[], int
  b[k] = a; //Type mismatch: cannot convert from int[] to int
Innanzitutto la variabile a, come int, non è definita da nessuna parte. Inoltre non puoi fare a < a[j] perchè o a è un int oppure un vettore di int ossia non può contemporaneamente essere un int su cui fare un confronto ed un array di int a[j].
Quindi quando dici che non ti funziona in realtà intendi dire che nemmeno riesci a compilarla.
Ti consiglio di sceglierti un IDE come eclipse o netbeans per sviluppare in java e poi per il mergesort di dare un'occhiata a quest'articolo che spiega bene il merge sort in java e ti da un approccio a junit per i test di validazione
http://www.vogella.com/articles/JavaAlgorithmsMergesort/article.html

Registrato
Aaron Smith
Newbie
*

Karma: +0/-0
Scollegato Scollegato

Messaggi: 1


Mostra profilo E-mail
« Risposta #2 inserita:: Maggio 12, 2018, 11:11:47 »

Your code not properly indented...

Well, below is the resource which has good explanation with example on merge sort algorithm,

http://www.flowerbrackets.com/java-merge-sort/
Registrato
Pagine: [1]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines