吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 353|回复: 3
收起左侧

[学习记录] python的冒泡排序,好好学习基础

[复制链接]
jie5201055 发表于 2024-11-19 11:14
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# 示例用法arr = [64, 34, 25, 12, 22, 11, 90]sorted_arr = bubble_sort(arr)print("排序后的数组:", sorted_arr)

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ganbey 发表于 2024-11-19 13:48
本帖最后由 ganbey 于 2024-11-19 13:51 编辑

for j in range(0, n - i - 1) 就是j从0到(n-1)-i的遍历,所以你这个冒泡是向后冒的,即数组的后i个元素有序。
if arr[j] > arr[j + 1]:           若当前下标为j的元素比后一个大
arr[j], arr[j + 1] = arr[j + 1], arr[j]    就对调它们的位置,python的语法支持两个变量同时赋值,等同于c语言的temp=arr[j], arr[j] = arr[j + 1], arr[j + 1] = temp,temp是暂存变量

如果LZ是对冒泡排序算法不太理解,在b站搜一下冒泡排序有很多很直观的动画,学习顺利~~~
manglang 发表于 2024-11-19 13:59
[Python] 纯文本查看 复制代码
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
# 示例用法
arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = bubble_sort(arr)
print("排序后的数组:", sorted_arr)
pyjiujiu 发表于 2024-11-19 14:44
理解算法,可以当作水浒传,好汉排名次
首轮:
第一比,好汉排成一排,从左到右, 1 和 2比,大的站到 2的位置,
第二比,还是那一排好汉,,新的 2 和 3比,,大的站到 3 的位置
......
这样 108-1=107 比下来,,宋江就站到最右边的位置(大当家)

然后继续新一轮角逐,这次宋江就不必再参与了( n-1-i   ,因为i 是轮数 是逐大轮递增的)
第一比,...
第二比,...

这样应该好懂多了,虽然该算法没啥效率,

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
jie5201055 + 1 + 1 热心回复!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-5 06:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表