排序原理:
- 比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。
- 对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。
冒泡排序API设计:
代码:
/**
* 冒泡排序算法
*/
public class Bubble {
/**
* 排序接口
* @param a 待排序数组
*/
public static void sort(Comparable[] a) {
for(int i = a.length - 1;i > 0;i--) { // 循环深度减1
for(int j = 0;j < i;j++) { // 循环遍历到指定深度
if(greater(a[j],a[j+1])) { // 比较两个相邻的元素
exchange(a,j,j+1); // 交换两个位置处的元素
}
}
}
}
/**
* 元素v是否大于元素w
* @param v
* @param w
* @return
*/
private static boolean greater(Comparable v, Comparable w) {
return v.compareTo(w) > 0;
}
/**
* 交换i和j位置的元素
* @param a
* @param i
* @param j
*/
private static void exchange(Comparable[] a, int i, int j) {
Comparable temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
测试代码:
public class BubbleTest {
public static void main(String[] args) {
Integer[] a = {4, 5, 6, 3, 2, 1};
Bubble.sort(a);
System.out.println(Arrays.toString(a));
}
}
运行效果: