Blame | Last modification | View Log | RSS feed
// Written by Ira Snyder
import java.io.*;
public class Test {
private int compCount, swapCount;
private class Entry {
public int x;
public Entry( int x ) { this.x = x; }
public boolean compareTo( Entry y ) {
compCount++;
//this is the only way to do this in java
//java _requires_ a boolean in if() statements
int temp = this.x - y.x;
if( temp > 0 ) { return true; } // this > y
return false; // this <= y
}
public Entry setEntry( int x ) {
return new Entry(x);
}
//this is the only way a swap method can be made in java.
//the usual C++ (and others) way of using pointers is not
//possible in java. (I've come up with a very solid
//explanation of this. See me if you want to know.)
public void swap( Entry[] array, int posA, int posB ) {
Entry temp = array[posB]; // temp = B
array[posB] = array[posA]; // B = A
array[posA] = temp; // A = temp
swapCount++;
}
public String toString() { return Integer.toString(x); }
} //end Entry class
public int getCompCount() { return compCount; }
public int getSwapCount() { return swapCount; }
public void resetCompCount() { compCount = 0; }
public void resetSwapCount() { swapCount = 0; }
public void testBubbleSort() {
Entry[] array = { new Entry(3), new Entry(2), new Entry(1) };
for( int i=0; i<array.length; i++ ) { System.out.print(array[i] + ", "); }
System.out.println();
array = BubbleSort(array);
for( int i=0; i<array.length; i++ ) { System.out.print(array[i] + ", "); }
System.out.println();
}
public Entry[] BubbleSort( Entry[] a ) {
for( int i=a.length-1; i>0; i-- )
for( int j=0; j<i; j++ )
if( a[j].compareTo(a[j+1]) ) a[j].swap(a,j,j+1);
return a;
}
}