# Bubble sort

I have a question.  Does the bubble sort algorithm always guarantee a perfect sort everytime?  Or do I have a bug in my prog?

Date d1,d2;
for(int i = 0; i < d.size()-1; i++)
for(int j = i; i < d.size()-1; i++)
if( ( d.elementAt(j).getDt() ).before(d.elementAt(i).getDt()))
d.setElementAt(d.elementAt(j),i);
LVL 4
###### Who is Participating?

Commented:
0

Commented:
public int [] bubbleSort(int array[])
{
boolean ok=false;
for(int i=0;i<array.length;i++)
{
ok=false;
for(int j=0;j<array.length-1;j++)
{
if(array[j]<array[j+1])
{
ok=true;
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
if(!ok)break;
}
return array;
}
0

Commented:
public List  bubbleSort(List array)
{
boolean ok=false;
for(int i=0;i<array.size();i++)
{
ok=false;
for(int j=0;j<array.size()-1;j++)
{
if( ( d.elementAt(j).getDt() ).before(d.elementAt(j+1).getDt()))

{
ok=true;
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
if(!ok)break;
}
return array;
}
0

Commented:
0

Commented:
>> if( ( d.elementAt(j).getDt() ).before(d.elementAt(j+1).getDt()))

should be

if( ( array.elementAt(j).getDt() ).before(array.elementAt(j+1).getDt()))
0

Commented:
0

Commented:
A vector Implementation here

// simple bubble sort.
for (int j=myDateVector.size()-1;j>=1;j--) {
for (int i=0;i<j;i++) {
Date d1=(Date) myDateVector.elementAt(i);
Date d2=(Date) myDateVector.elementAt(i+1);

if (d2.getTime()<d1.getTime()) {
myDateVector.setElementAt(d2, i);
myDateVector.setElementAt(d1, i+1);
}
}
}
0

Commented:
Or some thing like this

/*
* DateComparision.java
*
* Created on September 25, 2004, 12:24 AM
*/
import java.util.*;
/**
*
* @author  Sudhakar
*/
public class DateComparision {

/** Creates a new instance of DateComparision */
public DateComparision() {
Date d=new Date();
Date d1=new Date();
Vector vect=new Vector();
Object[] array=vect.toArray();
Arrays.sort(array, new DateComparator());
}

}

class DateComparator implements Comparator
{

public int compare(Object o1, Object o2) {
Date d1=(Date)o1;
Date d2=(Date)o2;
if(d1.before(d2))
{
return -1;
}
else if(d1.equals(d2))
{
return 0;
}
else
{
return 1;
}

}

}
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.