没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
引言
冒泡排序是一种简单直观的排序方法,它的基本思想是通过不断地交换相邻元素的位置来达到排序的目
的。虽然在大数据集面前,冒泡排序效率较低,但在某些特定情况下(如数据规模较小或部分有序的数
据),它依然有着不可替代的作用。此外,理解冒泡排序也是掌握更复杂排序算法的基础。
基础语法介绍
冒泡排序的核心在于比较与交换。对于一个数组而言,每次遍历都会保证当前遍历的最大值(或最小
值)被放置在其正确的位置上。这一过程会重复进行,直到整个数组都被正确排序。
基础实例
假设我们有一个未排序的列表 [3, 2, 1] ,我们的目标是将其按照从小到大的顺序排列。
这段代码展示了冒泡排序的基本使用方法。通过两层循环,我们可以看到,随着外层循环的推进,内部
循环逐渐减少比较次数,因为每次遍历结束后,最大的元素已经被放到了正确的位置。
进阶实例
当面对更加复杂的场景时,如何优化冒泡排序呢?例如,如果输入的列表已经是部分有序的,我们希望
冒泡排序能够更快地完成任务。这时可以引入一个标志位 swapped 来记录是否发生了交换,如果没有
发生交换,则说明数组已经有序,无需继续后续的遍历。
def bubble_sort(arr):
n = len(arr)
for i in range(n):
# 每次遍历都将当前最大值放到最后
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
unsorted_list = [3, 2, 1]
print("排序前:", unsorted_list)
sorted_list = bubble_sort(unsorted_list)
print("排序后:", sorted_list)
1
2
3
4
5
6
7
8
9
10
11
12
13
def optimized_bubble_sort(arr):
n = len(arr)
for i in range(n):
swapped = False
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
swapped = True
# 如果没有发生交换,提前退出
if not swapped:
break
return arr
partially_sorted_list = [1, 2, 3, 5, 4]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
资源评论
汤兰月
- 粉丝: 367
- 资源: 33
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功