所谓的冒泡算法,就是给数组进行排序,可以根据以小到大的顺序,也可以根据以小到大的顺序,在数组的封装类java.util.Arrays通过sort方法进行按升序的排序。那不用类的话怎么进行呢?
思路一:
设数组的长度为N:
(1)比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。
(2)这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。
(3)N=N-1,如果N不为0就重复前面二步,否则排序完成。
public static void bubblin(int[] a, int l) { int i, j; for (i = 0; i < l; i++) { for (j = 1; j < l - i; j++) { if (a[j - 1] < a[j]) {//升序为小于号,降序为大于号 int num = a[j - 1]; a[j - 1] = a[j]; a[j] = num; } } } } public static void main(String args[]) { int[] a = {1, 2, 3, 4, 0, 6, 5, 8}; bubblin(a, 8); for (int x : a) { System.out.print(x); } }
思路二:
让数组的每一个元素和数组里面除了自己的其他元素进行对比,如果有比它小的数值就进行交换位置
public static void bubblin2(int[] a, int l) { for (int i = 0; i < l; i++) { for (int j = i + 1; j < l; j++) { if (a[j] < a[i]) { int num = a[i]; a[i] = a[j]; a[j] = num; } } } } public static void main(String args[]) { int[] a = {1, 2, 3, 4, 0, 6, 5, 8}; bubblin2(a, 8); for (int x : a) { System.out.print(x); } }