算法思想:
算法在每次遍历中,比较连续相邻的元素,如果某一对元素是降序,则互换它们的值,否则,保持不变。就像较小的值像“气泡”一样逐渐浮向顶部,而较大的值沉向底部。
package introjava;
public class BubbleSort {
public static void
bubbleSort(int[] list){
boolean needNextPass = true;
for(int k =
1; k < list.length && needNextPass;
k++){ //k的范围意味着总共需要多少轮结束排序,是1到(length - 1),是因为元素两两相比,因为总共
//有(length - 1)个元素,那么必然需要比较((length - 1) - 1)轮
needNextPass
= false;
for(int i = 0; i < list.length - k;
i++){ //i的范围意味着每轮需要比较的两个元素中下标小的下标,是0到(length - k -
1),比如第一轮中,i的下标 //是从0到((length - 1) -1),最后一轮k =
(length - 1),i从0到(length - (length - 1) -
1)也就是0, //所以最后一轮比较list[0]和list[1]。
if(list[i]
> list[i + 1]){
int temp =
list[i];
list[i] = list[i + 1];
list[i + 1] = temp;
}
}
needNextPass = true;
}
}
public static void main(String []args){
int [] list = {2, 3, 2, 5, 6, 1, -2, 3, 14,
12};
bubbleSort(list);
for(int i = 0; i < list.length;
i++){
System.out.print(list[i] + " ");
}
}
}
原文:http://www.cnblogs.com/hansonzhe/p/3595642.html