Durcairion
2006-08-01, 00:06:16
Ich habe einen Vectore mit Personen aus einer Datenbank. Da die ID als PrimaryKey nur 1 mal vorhanen sein darf, würde ich den Vector gerne danach sortieren.
private Vector<Person> Sort(Vector<Person> vec)
{
int i,j;
Person tmp = new Person();
Person p1 = new Person();
Person p2 = new Person();
for(i=0;i<vec.capacity()-1;i++)
{
for(j=0;j<vec.capacity()-i-1;j++)
{
p1 = vec.get(0);
p2 = vec.get(2);
if(Integer.valueOf(p1.getID()).intValue() >= Integer.valueOf(p1.getID()).intValue())
{
tmp = p1;
p1 = p2;
p2 = tmp;
vec.remove(0);
vec.add(0, p1);
vec.remove(2);
vec.add(2, p2);
}
}
}
return vec;
}
Der Code hier funktioniert und tauscht mir das 1. (Pos. 0) mit dem 3. (Pos. 2) Element in der Liste.
Wenn ich jedoch anstatt der 0 j und anstatt der 2 ein j+1 einsetze, dann schmiert das Programm immer ab.
Kann mir jemand sagen wieso ich die Laufvariablen des BubbleSort hier nicht einsetzen kann? Das sind doch auch nichts anderes als Integer Werte :(
private Vector<Person> Sort(Vector<Person> vec)
{
int i,j;
Person tmp = new Person();
Person p1 = new Person();
Person p2 = new Person();
for(i=0;i<vec.capacity()-1;i++)
{
for(j=0;j<vec.capacity()-i-1;j++)
{
p1 = vec.get(0);
p2 = vec.get(2);
if(Integer.valueOf(p1.getID()).intValue() >= Integer.valueOf(p1.getID()).intValue())
{
tmp = p1;
p1 = p2;
p2 = tmp;
vec.remove(0);
vec.add(0, p1);
vec.remove(2);
vec.add(2, p2);
}
}
}
return vec;
}
Der Code hier funktioniert und tauscht mir das 1. (Pos. 0) mit dem 3. (Pos. 2) Element in der Liste.
Wenn ich jedoch anstatt der 0 j und anstatt der 2 ein j+1 einsetze, dann schmiert das Programm immer ab.
Kann mir jemand sagen wieso ich die Laufvariablen des BubbleSort hier nicht einsetzen kann? Das sind doch auch nichts anderes als Integer Werte :(