冒泡排序算法的个人学习记录

冒泡排序

设排序表长为n,从后向前或者从前向后两两比较相邻元素的值,如果两者的相对次序不对(A[i-1] > A[i]),则交换它们,其结果是将最小的元素交换到待排序序列的第一个位置,我们称它为一趟冒泡。下一趟冒泡时,前一趟确定的最小元素不再参与比较,待排序序列减少一个元素,每趟冒泡的结果把序列中最小的元素放到了序列的”最前面”。

分析

以下是我写的冒泡排序的例子,对一个数组进行从小到大的排列。通过例子可以很清晰的看出冒泡排序的原理。

@Test
    public void maopao(){

        int []arr = {5,4,8,9,1,7,2,6,0,3};

        int flag;
        for (int j = 0; j <= arr.length-1 ; j++) { // j = 0

            for (int k = 0; k <arr.length-j-1 ; k++) { k = 0,1,2,3,4,5,6,7,8
                if(arr[k+1]<arr[k]){
                    flag = arr[k];
                    arr[k] = arr[k+1];
                    arr[k+1] = flag;
                }
            }

        }

        System.out.println(Arrays.toString(arr));

    }

我说一下对这个方法的理解:
首先,要对数组从小到大的排序,我们应该想到,数组中的最大的元素往后移动,然后最终排序完成的数组为:

int []arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

例子中,第一个for循环是遍历数组,第二个for是为了判断大小,并移动数组中元素的位置。

当j=0时,第二次for遍历9次,也就是说arr.length-1 <arr.length-j-1 这个条件不满足是结束循环。
当k= 0时,k<9 满足遍历条件,if(4<5){ 所以需要改变数组元素的位置,我定义了临时变量flag ,首先把5赋值为flag,然后把数组中的第二个元素用第一个元素替换,此时,数组中第一个元素为4,第二个元素也为4,再将我们赋值的临时变量的值赋值给数组中的第二个元素,此时的数组改变为 int []arr = {4,5,8,9,1,7,2,6,0,3};

当j=1时,第二次for遍历8次,同上,将数组中的相邻元素比较,最大的向后移动。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值