算法思路
冒泡排序是常見的簡單排序之一赁濒,它是不穩(wěn)定的排序方法为鳄,復(fù)雜度O(n^2)局嘁。
??基本過程是:比較相鄰的元素溉箕。如果第一個比第二個大,就交換他們兩個悦昵。對每一對相鄰元素作同樣的工作肴茄,從開始第一對到結(jié)尾的最后一對。在這一點但指,最后的元素應(yīng)該會是最大的數(shù)寡痰。針對所有的元素重復(fù)以上的步驟,除了最后一個棋凳。持續(xù)每次對越來越少的元素重復(fù)上面的步驟拦坠,直到?jīng)]有任何一對數(shù)字需要比較。
冒泡排序.jpg
代碼
AbstractSort.java
public abstract class AbstractSort {
public abstract void sort(Comparable[] a);
public abstract boolean less(Comparable v, Comparable w);
public abstract void exch(Comparable[] a, int i, int j);
public abstract void show(Comparable[] a);
}
BubbleSort.java
public class BubbleSort extends AbstractSort {
@Override
public void sort(Comparable[] a) {
int N = a.length;
for (int i = 0; i < N - 1; i++)
for (int j = 0; j < N - i - 1; j++)
if (less(a[j + 1], a[j]))
exch(a, j + 1, j);
}
@Override
public boolean less(Comparable v, Comparable w) {
return v.compareTo(w) < 0;
}
@Override
public void exch(Comparable[] a, int i, int j) {
Comparable t = a[i];
a[i] = a[j];
a[j] = t;
}
@Override
public void show(Comparable[] a) {
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println();
}
}