1,比较相邻的元素,如果第一个元素大于第二个元素,则交换他们。
2,遍历一遍,进行比较,一轮下来后,最大的元素应该在列表末端。
3,持续对未排序的子列表进行遍历和比较,知道左右元素归位。
1 public class Bubble 2 { 3 4 public static void main(String[] args) 5 { 6 Integer[] arr = {112, 33, 5, 3, 22, 33, 44, 33, 56, 3, 1, 34, 7, 5, 5, 78, 7, 533,}; 7 bubble(arr); 8 for(Integer i: arr) 9 { 10 System.out.print(i + " "); 11 } 12 } 13 14 public static <T extends Comparable<? super T>> void bubble(T[] arr) 15 { 16 for(int i = arr.length - 1; i > 0; --i) 17 { 18 T tem; 19 for(int j = 0; j < i; ++j) 20 { 21 //比较次数:n(n-1)/2 22 if(arr[j].compareTo(arr[j+1]) > 0) 23 { 24 //交换相邻的2个元素 25 //交换次数:0~n(n-1)/2之间 26 tem = arr[j]; 27 arr[j] = arr[j+1]; 28 arr[j+1] = tem; 29 } 30 } 31 } 32 } 33 }
原文:http://www.cnblogs.com/wangziqiang/p/3612056.html