python实现冒泡排序算法的非递归版本_冒泡排序以及python代码实现(递归+非递归)...

一、冒泡排序

比较简单的排序算法,适合小规模数据集,效率较低。

依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。

每进行一趟排序,就会少比较一个数

python代码(非递归):

from typing import List

class Solution:

def BubbleSort(self, seq: List[int]) -> List[int]:

for i in range(len(seq)): #外层循环控制内层循环的长度

for j in range(0, len(seq) - i):

try:

if seq[j] > seq[j+1]: #如果前一个元素值大于后一个元素值,交换元素

seq[j], seq[j+1] = seq[j+1], seq[j]

except:

pass

return seq

a = Solution()

ans = a.BubbleSort([3, 4, 2, 1, 5, 1])

print(ans)

python代码(递归):

from typing import List

class Solution:

def BubbleSort(self, seq: List[int], bblen: int) -> List[int]:

for j in range(0, bblen):

print(bblen)

try:

if seq[j] > seq[j+1]:

seq[j], seq[j+1] = seq[j+1], seq[j]

except:

pass

bblen -= 1

if bblen <= 0: return seq

self.BubbleSort( seq, bblen)

return seq

a = Solution()

bblist = [3, 4, 2, 1, 5, 1]

ans = a.BubbleSort(bblist, len(bblist))

print(ans)

时间复杂度分析

最好的情况,也就是要排序的表本身就是有序的,那么我们比较次数,可以判断出就是n-1次的比较,没有数据交换,此时时间复杂度为O(n)

当最坏的情况,即待排序是逆序的情况,需要比较

次,此时时间复杂度为

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值