冒泡排序

本文详细介绍了冒泡排序的定义及其实现过程,并通过一个具体的Java示例程序展示了如何使用冒泡排序对整数数组进行排序。同时分析了冒泡排序在最好情况和最坏情况下的时间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当听到别人说用了冒泡排序进行排序时,不了解的肯定疑惑什么是冒泡排序、定义是什么?

定义:n个记录进行冒泡排序的方法是:首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则交换两个记录的值,然后比较第二个记录和第三个记录的关键字,依此类推,直到第n-1个记录和第n个记录的关键字比较过为止。上述过程称为第一趟冒泡排序,其结果是关键字最大的记录被交换到第n个记录位置上。然后进行第二趟冒泡排序,对前n-1个记录进行同样的操作,其结果是关键字次大的记录被交换到第n-1个记录的位置上。最多进行n-1趟,所记录有序排列。若在某趟冒泡排序过程中没有进行相邻位置的元素交换处理,则可结束排序过程。

冒泡排序法在最好情况下(待排序列已按关键码有序),只需做一趟排序,元素的比较次数为n-1且不需要交换元素,因此总比较次数为n-1次,总交换次数为0次。在最坏情况下(元素已经逆序排列),进行第j趟排序时,最大的j-1个元素已经排好序,其余的n-(j-1)个元素需要进行n-j次比较和n-j次交换,因此总比较次数为n(n-1)/2,总交换次数为n(n-1)/2.

冒泡排序是一种稳定的排序方法,其时间复杂度为O(n的二次方)。
在排序过程中仅需要一个元素的辅助空间用于元素交换,空间复杂度为O(1)。

了解了冒泡排序定义后,那就开始实践吧!
/**
 * 冒泡排序
 * @author ZL
 * 2017年8月13日
 */
public class BubbleSort {
    public static void main(String[] args) {
        int[] ints={12,55,34,143,51,31,85,61,42,29,49,43,64,59,64,46,85,15,62,88};
        System.out.println("*****************排序之前***************");
        for (int i : ints) {
            System.out.print(i+"  ");
        }
        for(int i=ints.length-2;i>=0;i--){
            for(int j=0;j<=i;j++){
                if(ints[j]>ints[j+1]){
                    //左边比右边大
                    int temp;
                    temp=ints[j];
                    ints[j]=ints[j+1];
                    ints[j+1]=temp;
                }
            }
        }

        System.out.println("\n*****************排序之后***************");
        for (int i : ints) {
            System.out.print(i+"  ");
        }
    }
}

运行结果:

*****************排序之前***************
12  55  34  143  51  31  85  61  42  29  49  43  64  59  64  46  85  15  62  88  
*****************排序之后***************
12  15  29  31  34  42  43  46  49  51  55  59  61  62  64  64  85  85  88  143  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值