PDA

View Full Version : [java]Bubble Sort


Killer Application
17-02-2008, 19:30
ho compilato questo bubble sort che data in entry una matrice piena di parole me le mette in ordine alfabetico.

il problema è che mi da un errore::D

void exchange(String v[], int i, int a) //questa è la funzione che mi cambia l'ordine nell'array
{
String obk="vuoto";
obk= v[i];
v[i]=v[a];
v[a]=obk;
}


void main() {
String first="vuoto";
String next="vuoto";
String [] v={"c","d","me","lol","ciao","minch","fume","ciu","alur"};
int i = v.length;
while(i>0)
{
for(int j=0; j < i-1; j++)
{
int a=j++;
if(v[j].compareTo(v[a])<0) //qui controllo se uno viene prima dell'altro
exchange(v,j,a);
}
i--;
}
for (p=0; p<v.length;p++){
System.out.println(v[p]); //stampo a video la nuova matrice
}
}
main();





un errore l'ho trovato, pero adesso mi stampa a video una sequenza errata di lettere

c
d
lol
me
ciao
minch
ciu
fume
alur


suggerimenti?

risolto il problema, e tra l'altro è una svista colossale.....


vediamo chi indovina per primo?

Manbearpig
17-02-2008, 21:59
Giusto perche' non mi passava un cazzo eh...

public class BubbleSort {


private static void swap(String[] v, int i, int j)
{
String tmp = v[i];
v[i] = v[j];
v[j] = tmp;
}


public static void sort(String[] v)
{
boolean swapped = true;

while(swapped)
{
swapped = false;
for(int i = 0; i < v.length - 1; i++)
{
if(v[i].compareTo(v[i+1]) > 0)
{
swap(v, i, i+1);
swapped = true;
}
}
}
}


public static void main(String[] args)
{
String [] v={"c","d","me","lol","ciao","minch","fume","ciu","alur"};
BubbleSort.sort(v);
for(int i =0; i < v.length; i++)
System.out.println(v[i]);
}
}