冒泡排序

本文详细介绍了冒泡排序的基本思想、排序过程、效率分析以及稳定性。冒泡排序通过两两比较并交换,使得最大元素逐步下沉。时间复杂度为O(n^2),在正序情况下最好时间复杂度为O(n)。此外,文章还提供了一个简单的Java实现示例,用于演示冒泡排序的代码逻辑。
摘要由CSDN通过智能技术生成

冒泡排序基本思想:

冒泡排序是交换排序的一种,两两比较待排序的关键字,发现两个记录的次序相反时即进行交换。

在冒泡排序的过程中,关键字小的记录好比水中的气泡逐趟向上漂浮,而关键字大的记录好比石块往下沉,每一趟有一个最大的石头沉搭到水底。

 

排序过程:

首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序(即source[1].key>source[2].key),则交换两个记录。

以此类推,直到第n-1个记录和第n个记录的关键字进行比较,这个过程称作第一趟排序,其结果使得最大的记录被安置到最后一个记录的位置上。

 

冒泡排序效率

若初始序列为“正序”,则只需要进行一趟排序,在排序过程中进行n-1次关键字的比较,且不移动记录;

若初始序列为“逆序”,则需要进行n-1趟排序,在排序过程中进行n(n-1)/2次关键字的比较,并做等数量级的记录移动。

因此,总的时间复杂度为O(n2), 最好时间复杂度为O(n)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值