jie5201055 发表于 2024-11-19 11:14

python的冒泡排序,好好学习基础

def bubble_sort(arr):    n = len(arr)    for i in range(n):      for j in range(0, n - i - 1):#这里还是有点看不懂,不理解            if arr > arr:                arr, arr = arr, arr#这里还是有点看不懂,不理解
    return arr# 示例用法arr = 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 > arr:         若当前下标为j的元素比后一个大
arr, arr = arr, arr    就对调它们的位置,python的语法支持两个变量同时赋值,等同于c语言的temp=arr, arr = arr, arr = temp,temp是暂存变量

如果LZ是对冒泡排序算法不太理解,在b站搜一下冒泡排序有很多很直观的动画,学习顺利~~~

manglang 发表于 2024-11-19 13:59

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
      for j in range(0, n - i - 1):
            if arr > arr:
                arr, arr = arr, arr
    return arr
# 示例用法
arr =
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]
查看完整版本: python的冒泡排序,好好学习基础