冒泡排序
“”"
基本原理:
1, 相邻的元素比较,如果前一个元素大于后一个元素,则交换位置.
2, 一次遍历后,最大的元素会跑到最后.
3, 第二次遍历就只需要比较前len(arr) - i - 1个元素了,因为后面的元素肯定都比前面的元素要大了.
时间复杂度为O(n^2), 空间复杂度为O(1)因为并没有创建新的数组. 是个稳定的算法.
“”"
# 方法一:
def bubble_sort(arr):
length = len(arr)
for i in range(length - 1):
# 改进措施. 如果一次循环完了之后没有进行交换,说明arr本身就有序.后续循环无需再做.
swapped = False
for j in range(length - i - 1):
# 比较相邻的两个元素
if arr[j] > arr[j + 1]:
# 交换位置
arr[j], arr[j + 1] = arr[j + 1], arr[j]
swapped = True
if not swapped:
break
return arr
if __name__ == '__main__':
arr = input('请输入要排序的数字,以逗号分割').strip()
arr = [int(item) for item in arr.split(',')]
print(*bubble_sort(arr), sep=',')
# 方法二:
l=[1,3,5,7,9,2,4,6,8]
for i in range(0 , len(l)-1):
for j in