1、动图演示(图片来源https://forestcat.blog.csdn.net/)
2、实现原理:
①从左到右,相邻元素进行比较,每比较一轮,就会找到序列中最大的一个,放到本轮的最后;
②如果有n个数据进行排序,总共需要比较n-1轮;
③每一轮比较完毕,下一轮的比较就会少一个数据参与。
3、源代码:
1 public class ArrayDemo { 2 //用于冒泡排序的函数 3 public static void maoPao(int[] a) { 4 //总共比较n-1轮 5 for(int i=0;i<a.length-1;i++) { 6 //每轮比前一轮少一个元素参与比较 7 for(int j=0;j<a.length-i-1;j++) { 8 //如果相邻的两个元素比较,前者大与后着 9 if(a[j]>a[j+1]) { 10 //交换两元素位置 11 int temp=a[j]; 12 a[j]=a[j+1]; 13 a[j+1]=temp; 14 } 15 } 16 } 17 } 18 //数组输出函数,以空格隔开每个元素 19 public static void print(int[] a) { 20 for(int i=0;i<a.length;i++) { 21 System.out.print(a[i]+" "); 22 } 23 System.out.println(); 24 } 25 //主函数 26 public static void main(String[] args) { 27 int[] array= {9,5,2,4,10,8,16,12}; 28 System.out.println("排序前输出数组:"); 29 print(array); 30 31 maoPao(array); //调用排序函数 32 System.out.println("排序后输出数组:"); 33 print(array); 34 } 35 36 }
4、结果展示: