完全排序过程请参见动画演示http://student.zjzk.cn/course_ware/data_structure/web/flashhtml/maopaopaixu.htm
首先你得知道的是冒泡排序法说的是:像气泡一样从下往上两两"碰撞"后轻的上浮,重的下沉。知道了这两点就差不多能写出来了,只是这里还有一个"哨兵",以前不知道它到底干嘛用的,
今天仔细看了下,如果在任一趟冒泡过程中都不满足arr[j] < arr[j - 1],那么很显然说明这组数值绝对是这样的 1,2,3,4,那么还排什么啊,直接跳出吧
public static void main(String[] args) {
int[] arr = { 1, 2, 3 };
BubbleSort bs = new BubbleSort();
bs.bubbleSort(arr);
}
private void bubbleSort(int[] arr) {
int tmp = 0;
boolean flag = false;
for (int i = 1; i < arr.length; i++) {
flag = false;//注意理解此"哨兵"的作用,很容易忘记加这个判断
for (int j = arr.length - 1; j >= i; j--) {
if (arr[j] < arr[j - 1]) {
tmp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = tmp;
flag = true;
}
}
if (!flag) {
break;// 或者return;
}
}
for (int i : arr) {
System.out.println(i);
}
}
我的博客其它文章列表
http://my.oschina.net/helu