冒泡算法练习

冒泡排序是一种常见的排序算法,其原理是通过比较相邻元素的大小,将较大或较小的元素逐渐“浮”到数组的顶端或底端,从而完成整个数组的排序。

虽然冒泡排序算法的时间复杂度为 O(n^2)O(n2),并不是最优秀的排序算法,但是由于其简单易懂、易实现等特点,在实际应用中仍然有着一定的使用场景。同时,它也是学习算法和排序的一个很好的入门选择。

使用bubble_sort,它 是一种排序算法,它通过比较相邻的元素并不断交换位置来进行排序。

def bubble_sort(arr):

n = len(arr)

# 遍历所有数组元素

for i in range(n):

# 最后一个i个元素已经排好序,不需要再次比较

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

array = [1, 23,14,56,24,19,16,45,43]

sorted_array = bubble_sort(array)

print(sorted_array)

每步代码解释:

def bubble_sort(arr): n = len(arr)

这段代码定义了一个名为 bubble_sort 的 Python 函数,它接收一个参数 arr,该参数表示需要进行排序的数组。函数中的第一行代码获取了数组的长度,用于后续循环中的计数器

for i in range(n): 控制排序的轮数,每一轮将会把数组中最大的元素交换到数组的最后

for j in range(0, n-i-1)

由于冒泡排序算法每进行一轮最大元素都会被交换到数组的末尾,因此,我们没必要再去遍历已经排好序的元素,即前 i 个元素,所以内部的循环使用了 range(0, n-i-1),表示每次只需查找到第 n-i-1 个元素就可以了

if arr[j] > arr[j+1]: 如果当前元素大于后一个元素,那么就需要交换它们的位置,以保证较小元素逐渐“浮”到数组的前面。 arr[j], arr[j+1] = arr[j+1], arr[j] 是将两个变量的值互换,从而实现元素的交换。

return arr:使用 return 语句可以将函数的执行结果返回给调用者。

array = [1, 23,14,56,24,19,16,45,43]

sorted_array = bubble_sort(array)

print(sorted_array)

首先定义了一个未排序的数组 array,然后将这个数组作为参数传入 bubble_sort 函数中进行排序。排序后的结果保存在 sorted_array 中,并通过 print 函数在控制台输出。

最后输出结果:[1, 14, 23, 24, 19, 16, 45, 43, 56]

冒泡的第二种是使用sortport ,它是一个函数名,如果需要使用该函数,必须在其后加上括号 () 调用。

lis = [1, 32, 11, 161, 9, 16, 34, 67]

def sortport ():

for i in range(len(lis)-1):

for j in range(len(lis)-1-i):

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

lis[j], lis[j+1] = lis[j+1], lis[j]

return lis

sorted_lis = sortport()

print(sorted_lis)

输出结果:[1, 9, 11, 16, 32, 34, 67, 161]

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值