算法思路
1,比较相邻的元素,如果第一个元素大于第二个元素,则交换他们。
2,遍历一遍,进行比较,一轮下来后,最大的元素应该在列表末端。
3,持续对未排序的子列表进行遍历和比较,知道左右元素归位。
Java 代码
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> 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)/222 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 }
复杂度