【思路】冒泡排序的思想是始终将第一位存放最小值(或最大值,此文以最小值举例),一旦遇到比默认的最小值还小的,则将那个更小的放到第一位作为最小值与其他值继续比较。同理存放第二位以及之后的位置。
代码:
1 public static void main(String[] args) { 2 int[] a = {4,3,5,6,1,7,2,8,9}; 3 int temp; 4 5 for (int i = 0; i < a.length; i++) { 6 for (int j = i+1; j < a.length; j++) { 7 8 if(a[j]<a[i]){ 9 temp = a[i]; 10 a[i] = a[j]; 11 a[j] = temp; 12 } 13 14 } 15 } 16 17 //输出排序后的数组 18 for (int i = 0; i < a.length; i++) { 19 System.out.print(a[i]+ " "); 20 } 21 22 }
代码非常简单,也很早就知道怎么写,但是面试的时候要求讲解一下,突然有点不知所措,才发觉一直没有理解,只是以为理解了而已。
主要在于:是某个位置上的值在与其后面的位置上的值比较大小,当值调换之后,仍然是这个位置上的值与剩下的值作比较,直到这一轮比较结束。