数据结构01——冒泡排序

冒泡排序是一种常见的交换排序算法,通过相邻元素的比较和交换来逐步排序。文章详细介绍了冒泡排序的基本思想,包括每趟排序的过程,并通过实例展示了排序步骤。最后,虽然未提供代码,但提到了在包含n个元素的数组中,冒泡排序需进行n-1趟即可完成排序。
摘要由CSDN通过智能技术生成

数据结构之冒泡排序

在数据结构的算法中,利用交换数据元素的位置进行排序的方法称作为交换排序,而冒泡排序就是常用的交换算法之一。

【冒泡排序的基本思想】设数组a中存放了n个数据元素,循环进行n-1趟如下的排序过程,从最后一个元素开始比较,第一趟时,依次比较相邻两个数据元素 a[i] 和 a[i-1] ,若为逆序,即a[i-1] > a[i],则交换两个数据元素,否则不交换,这样数值大的数据元素将被放置在a[n-1]中;第二趟时,数据元素个数减1,即数据元素个数为n-1,操作方法和第1趟的类似,这样整个n个数据元素集合中数值次大的数据元素将被放置在a[n-2]中;当第一趟结束时,整个n个数据元素集合中次小的数据元素将被放置在 a[1] 中,a[0] 中放置了最小的数据元素。

【举个栗子】假设数组a中元素为 38、27、2、5,则在第一趟中,先从数组最后一个数开始和其相邻元素进行比较,即5和2进行比较,5比2大,不交换;然后2和27比较,2比27小,交换,数组变成了38、2、27、5,这时候2再与38比较,2比38小,交换,数组变成2、38、27、5,所以交换排序第一趟比较后数组变为:

2、38、27、5

同理,在第二趟中,先从数组最后一个数开始和其相邻元素进行比较,一直比较到倒数第二个。即5和27进行比较,5比27小,交换,数组变成;2、38、5、27;然后5和38比较,5比38小,交换,数组变成了2、5、38、27,所以交换排序第二趟比较后数组变为:

2、5、38、27

在第三趟中,先从数组最后一个数开始和其相邻元素进行比较。即27和38进行比较,27比38小,交换,数组变成;2、5、27、38。所以交换排序第三趟比较后数组变为:                        

2、5、27、38

可以看出,在一个包含n个元素的数组中,经过n-1趟冒泡排序便可实现排序。

代码:

class BubbleSort{
    public static void sort(long[] arr) {
        //临时变量
        long tmp = 0;
        //排序运行的趟数
        for(int i = 0;i<arr.length-1;i++) {
            //要交换的最大次数,最后面一个元素和它前一位进行判断,如果比它小,则交换位置
            for(int j = arr.length-1;j>i;j--) {
                if(arr[j]<arr[j-1]) {
                    //进行交换
                    tmp = arr[j];
                    arr[j] = arr[j-1];
                    arr[j-1] = tmp;
                }
            }
        }
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值