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: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站搜一下冒泡排序有很多很直观的动画,学习顺利~~~ 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) 理解算法,可以当作水浒传,好汉排名次
首轮:
第一比,好汉排成一排,从左到右, 1 和 2比,大的站到 2的位置,
第二比,还是那一排好汉,,新的 2 和 3比,,大的站到 3 的位置
......
这样 108-1=107 比下来,,宋江就站到最右边的位置(大当家)
然后继续新一轮角逐,这次宋江就不必再参与了( n-1-i ,因为i 是轮数 是逐大轮递增的)
第一比,...
第二比,...
这样应该好懂多了,虽然该算法没啥效率,
页:
[1]