八大排序之冒泡排序(Java实现)

一、冒泡排序原理(从小到大)

对待排序的数组从前往后遍历,遍历过程中如果发现两个数据大小顺序不符时,对两个数据进行交换,这时较大的数据就会往后移动(如图所示)

 注意:排序过程中每一轮都会将最大的数移动到最后面,所以每次遍历比较的次数都会比上一轮少一次

二、示例

有下列一组数据[3,2,1,4] ,接下来我们用冒泡的方法对其进行排序

 第一轮:

从数组的第一个数据3的位置开始遍历,发现3的下一个数据比3小,那么需要把3和2的位置进行交换

 然后从3的位置开始,3和4遵从升序,无需交换

此时遍历到4,4的下一个数据 比4小,把4和1的位置进行交换

 至此第一轮排序完成,数组为[2,3,14],此时数组中最大的数据4排在了最后

第二轮:

因为上一轮中最大数据4已经排在了最后,所以第二轮不用遍历到4,遍历数据2,3,1即可

从2的位置开始,2和3遵从升序,无需交换

遍历到3,3的下一个数据比3小,把3和1的位置进行交换

第二轮完成,3被排在了第二次遍历的最后位置

第三轮

在前两轮的遍历中,3和4已经有序的排在了最后,所以此次遍历仅需遍历2和1

2的下一个数据比2小,把2和1的位置进行交换

第三轮遍历完成,冒泡排序结束

三、代码演示 

public static void main(String[] args) {
     int[] arr = new int[]{1,0,2,4,3,5,7,6};
     maopao(arr);
        System.out.println(Arrays.toString(arr));
    }

    public static void maopao(int[] arr){
        for (int i = 0; i < arr.length; i++){
            for (int j = 0; j < arr.length - i - 1; j++){
                if (arr[j] > arr[j+1]){
                    //进行位置交换
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值