Bubble Sort
public class BubbleSort {
static int step=0;
public static int[] sort (int[] a) {
int tmp, i;
for(i=0; i<a.length-1; i++) {
for(int j=0; j<a.length-1-i; j++) {
step++;
System.out.println("Step "+step+" Comparing a["+j+"]="+a[j]+" with a["+(j+1)+"]="+a[j+1]);
if(a[j]>a[j+1]) {
System.out.println("Swaping a["+(j+1)+"]="+a[j+1]+" with a["+j+"]="+a[j]);
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
} else System.out.println("Nothing is being changed this time.");
printArray(a);
}
}
return a;
}
public static void printArray(int[] a) {
String v = ", ";
int i;
for(i=0; i<a.length-1; i++) {
if(i==a.length-2) {
v = "\n\n";
}
System.out.print(a[i]+v);
}
}
public static void main(String[] args) {
int[] a = {2, 44, 66, 21, 5, 53, 32, 11, 4, 18, 49, 75, 78, 79};
System.out.print("Initial array: ");
printArray(a);
int b[] = sort(a);
System.out.print("Processed array: ");
printArray(b);
}
}
Selection Sort
public class SelectionSort {
static int step = 0;
public static int[] sort(int[] array) {
return sort(array, 0, array.length-1);
}
public static int[] sort(int[] array, int min, int max) {
if(min==max) return null;
step++;
System.out.print("Step "+step);
int index = select(array, min, max);
if(index!=min) {
int tmp = array[min];
array[min] = array[index];
array[index] = tmp;
System.out.println(" Element a["+min+"]="+array[min]+" is being interchanged with a["+index+"]="+array[index]);
} else System.out.println(" Nothing is being changed this time, jumping to the next element");
printArray(array);
sort(array, min+1, max);
return array;
}
public static int select(int[] array, int min, int max) {
int index = min;
for(int i=min+1; i<=max; i++) if(array[i]<array[index]) index=i;
return index;
}
public static void printArray(int[] a) {
String v = ", ";
int i;
for(i=0; i<a.length-1; i++) {
if(i==a.length-2) {
v = "\n\n";
}
System.out.print(a[i]+v);
}
}
public static void main(String[] args) {
int[] a = {2, 44, 66, 21, 5, 53, 32, 11, 4, 18, 49, 75, 78, 79};
System.out.print("Initial array: ");
printArray(a);
int[] b = sort(a);
System.out.print("Processed array: ");
printArray(b);
}
}