您的位置:首页 > 房产 > 建筑 > 凯里网站设计_泰安网站建设与优化_网站优化怎么操作_成都百度快照优化排名

凯里网站设计_泰安网站建设与优化_网站优化怎么操作_成都百度快照优化排名

2024/12/23 8:23:56 来源:https://blog.csdn.net/m0_45284589/article/details/144352317  浏览:    关键词:凯里网站设计_泰安网站建设与优化_网站优化怎么操作_成都百度快照优化排名
凯里网站设计_泰安网站建设与优化_网站优化怎么操作_成都百度快照优化排名

问题

排序 [30, 24, 5, 58, 18, 36, 12, 42, 39]

冒泡排序

冒泡排序通过多次遍历待排序列表,每次比较相邻两个元素,如果顺序错误就将它们交换过来,重复进行直到没有需要交换的元素,排序完成。

图解

  1. 第一轮排序:遍历全部元素,依次比较相邻元素,直到将最大的元素交换到最后一位。
    在这里插入图片描述

  2. 第二轮排序,遍历待排序元素,依次比较相邻元素,将最大的元素交换到待排序列表的最后一位。
    在这里插入图片描述

  3. 继续遍历直到所有元素被交换到正确位置时结束。

代码

def bubble_sort(nums):n = len(nums)for i in range(n -1):	# 外循环for j in range(n-1-i):		# 内循环if nums[j] > nums[j+1]:		# 顺序错误时交换nums[j], nums[j+1] = nums[j+1], nums[j]		return nums

时间复杂度

冒泡排序的时间复杂度为 O(n2)

算法优化
增加一个标志位 flag,若在某轮内循环中没有进行任何交换操作,表示数组已经完成排序,可以直接返回结果。

def bubble_sort(nums):n = len(nums)for i in range(n -1):	# 外循环flag = Falsefor j in range(n-1-i):		# 内循环if nums[j] > nums[j+1]:		# 顺序错误时交换nums[j], nums[j+1] = nums[j+1], nums[j]	flag = True	if not flag: breakreturn nums

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com