冒泡排序的原理:
相邻元素两两比较,大的右移.执行一遍后最大值移动到了最右侧,然后执行循环,即可得到一个排序好的数组.
4 | 3 | 2 | 6 | 1 |
第一遍:
- 4>3 互换:3 4 2 6 1
- 4>2 互换:3 2 4 6 1
- 6>1 互换:3 2 4 1 6
第二遍:
- 3>2 互换 2 3 4 1 6
- 4>1 互换 2 3 1 4 6
第三遍:
- 3>1 互换 2 1 3 4 6
第四遍:
- 2>1 互换 1 2 3 4 6
代码实现:
核心代码:(循环一遍)
for i in range(0,len(alist)-1): # 循环n-1次
if alist[i] > alist[i+1]:
alist[i], alist[i+1] = alist[i+1], alist[i] # 互换
完整实现:
def sort(alsit):
for j in range(0,len(alist)-1):
for i in range(0,len(alist)-1-j): # 外层循环每循环一次,内需要排序的元素个数相应减少
if alist[i] > alist[i+1]:
alist[i], alist[i+1] = alist[i+1], alist[i]
return alist