冒泡排序:每一次排序,最大或最小的数像气泡一样升到最上面。
也就是每次遍历都是比较相邻的俩个数,如果第i个数大于第i+1个数,则将俩个数交互位置,再继续比较相邻的俩个数。
俩个循环,里面那个循环是比较相邻俩个数用的。里面那个循环走完,也就是说最大的数已经排到最后面了。
外面那个循环+1,则继续选择第二大的数。
图解:(图是盗用的)①代表第一次排序,最小的数52通过每次前后的比较,排到了最前面。②代表第二次比较,59比68小,交行位置,59没有57小,则不交换位置,则第二次排序完,第二小的数为57。
代码如下:
1 import java.util.Arrays; 2 3 public class BubbleSort { 4 5 public void sort(int[] arrs) { 6 System.out.println(Arrays.toString(arrs)); 7 for (int i = 0; i < arrs.length; i++) { 8 for (int j = 0; j < arrs.length - i - 1; j++) { 9 if (arrs[j] > arrs[j+1]) { 10 int temp = arrs[j]; 11 arrs[j] = arrs[j+1]; 12 arrs[j+1] = temp; 13 } 14 System.err.println(Arrays.toString(arrs)); 15 } 16 } 17 } 18 19 public static void main(String[] args) { 20 int[] arrs = {4,3,2,1,5,6,9,20,14}; 21 BubbleSort test = new BubbleSort(); 22 test.sort(arrs); 23 System.out.println(Arrays.toString(arrs)); 24 } 25 }
不知道大家看懂没,第一次写博客,表达能力略差。欢迎留言评论指点一二。O(∩_∩)O