【算法设计与分析】(习题4.2-4.5) 冒泡排序

说明:参考书目为《Computer Algorithms --- Introduction to Design and Analysis》(第三版)Sara Baase, Allen Van Gelder

部分内容参考自大工林晓惠老师的课程【算法设计与分析】讲解。林老师讲算法非常细致,让人很容易理解,推荐一波~

(如部分内容涉及侵权,请联系我删除,谢谢)

 

之前的文章请见:

【算法设计与分析】如何分析一个算法

【算法设计与分析】4.2 插入排序

本篇文章目录

冒泡排序

1. 定义

2. 排序过程示例

3.  算法代码

4. 复杂度分析

5. 正确性证明

6. 算法优化


冒泡排序

1. 定义

依次比较相邻的两个元素,若逆序则交换两个元素。每趟冒泡排序都能将子序列的最大数据元素放在最终的位置上。若一趟冒泡排序没有做任何数据交换,则说明子序列已经升序,可提前终止排序。

2. 排序过程示例

3.  算法代码

输入:数组Element[] E,大小为n(n>=0)

输出:排序后的Element[] E

void bubbleSort(Element[] E, int n)
    int numPairs;    // 待比较的数据对数量。即排除已固定位置的数据,对剩下的子序列进行排序所需比较次数
    boolean didSwitch;    // 在一趟排序中是否有数据交换&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值