今天给大家来讲解一下冒泡排序。
原理讲解
首先来介绍一下冒泡排序的基本原理:对存放原始数组的数据,按照从前往后的方向进行多次扫描,每次扫描都称为一趟。当发现相邻两个数据的大小次序不符合时,即将这两个数据进行互换,如果从小大小排序,这时较小的数据就会逐个往前移动,好像气泡网上漂浮一样。
冒泡排序特点:升序排序当中每一轮比较会把最大的数沉到最底(这里以从小到大为例),所有相互比较的次数每一轮会比前一轮少一次。
通过原理我们可以了解到,(冒大泡来举例)冒泡排序每次都是通过目前能找到的最大的数A,来和后面的一个数进行比较,如果比他小,就要和A交换位置,如果比A这个数大,那么这个更大的数成为A,直到A成为最后的一个数。
动图深入理解
如果不太理解的同学,我们可以看下面的动态图。
代码讲解
public static void main(String[] args){
int[] arr = {6,1,5,7,9,4,8,2,3};
System.out.println("排序前:"+Arrays.toString(arr));
System.out.println("排序后:"+Arrays.toString(sort(arr)));
}
public static int [] sort(int[] aa){
for(int i=0;i<aa.length;i++){
for(int k=0;k<aa.length-i-1;k++){
if(aa[k]>aa[k+1]){
int temp = aa[k];
aa[k]=aa[k+1];
aa[k+1]=temp;
}
}
}
return aa;
}
在sort 这个方法中我们可以看到有2层for循环。外层for循环,其中i代表第几次进行寻找最大的数,也就在第i次循环中,我们寻找第i大的数。
而内层中则是执行“如果遇到比目前最大的数还要大的数,则进行交换”
我们运行测试,检验代码正确性:
好了,这次的文章就到这里,喜欢的同学可以点赞收藏,遇到问题,可以评论,或者留言,我一定会第一时间给到回馈,感谢观看!!
注:本文为本人学习时心得分享,有讲错或者需要改正的地方,请指正,我会虚心接受