算法与数据结构--冒泡排序

目录

1、冒泡排序的原理

2、过程分析

3、参考代码


1、冒泡排序的原理

  • 循环比较相邻的元素,将小的放到前面
  • 进行n-1轮比较,完成排序

     冒泡排序举例:{8 , 2 , 3 , 7 , 1}的排序过程如下所示:

          数组:   array={8 , 2 , 3 , 7 , 1}

          第1轮: array={2 , 3 , 7 , 1 , 8}

          第2轮: array={2 , 3 , 1,  7 | 8}

          第3轮: array={2 , 1 | 3,  7 , 8}

          第4轮: array={1 | 2 , 3 , 7 | 8}

2、过程分析

  • i 代表次数
  • j 代表比较位置
arrayijj + 1array[j]array[j + 1]array[j]>array[j + 1][j]交换[j + 1]
1
{8,2,3,7,1}[0][0][1]82TRUE8<->2
{2,8,3,7,1}[0][1][2]83TRUE8<->3
{2,3,8,7,1}[0][2][3]87TRUE8<->7
{2,3,7,8,1}[0][3][4]81TRUE8<->1
{2,3,7,1|8}
2
{2,3,7,1|8}[1][0][1]23FALSE--
{2,3,7,1|8}[1][1][2]37FALSE--
{2,3,7,1|8}[1][2][3]71TRUE7<->1
{2,3,1|7,8}
3
{2,3,1|7,8}[2][0][1]23FALSE--
{2,3,1|7,8}[2][1][2]31TRUE3<->1
{2,1|3,7,8}
4
{2,1|3,7,8}[3][0][1]21TRUE2<->1
{1|2,3,7,8}
结果
{1,2,3,7,8}
  • i 的取值范围是: i = 0 ~ < array.length - 1
  • j 的取值范围是: j = 0 ~ < array.length - i -1
  • 交换步骤伪代码如下:
    if([j]>[j+1]){ 
        [j]<->[j+1] 
    }

3、参考代码

    public static void main(String[] args) {
        int[] array = {8, 2, 3, 7, 1};
        System.out.println(Arrays.toString(bubbleSort(array)));
    }

    private static int[] bubbleSort(int[] array) {
        for (int i = 0; i < array.length - 1; i++) {
            for (int j = 0; j < array.length - i - 1; j++) {
                if (array[j] > array[j + 1]) {
                    int tmp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = tmp;
                }
            }
        }
        return array;
    }
    --------------输出结果-------------
    [1, 2, 3, 7, 8]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值