#encoding:utf-8
#@Time:2019/3/31 23:19
#@Author:sunny
#原理:可以理解为如果将数量大小比作轻重不同的气泡,轻的气泡会冒到重的气泡之上的思想。
#下面我们来先做一个最原始的排序代码:
nums=[3,1,2]
def bubboSort(nums):
for i in range(len(nums)-1):#这个循环负责设置冒泡排序进行的次数(n个数,只需要冒泡n-1次,就可以把n个数排序好)
#print(range(len(nums)-1))
for j in range(len(nums)-1-i):#这里这个j呢就是控制每一次具体的冒泡过程,请你想一想,我们第一次冒泡需要冒几次,也就是说需要比较几次,
#假如有三个数,那只需要两次就可以了,当下一次时,最后一个已经是有序的了,所以说少冒泡一次,所以这里j每次都会减去i的值,即不用冒“无用之泡泡”
print(range(len(nums)-1-i))
if nums[j]>nums[j+1]:
nums[j],nums[j+1]=nums[j+1],nums[j]
return nums
bubboSort(nums)
print(nums)
# 3 1 2
#第一轮 3>1 1 3 2
#第二轮 3>2 1 2 3
console:
[1, 2, 3]
def bubble_sort(nums):
for i in range(len(nums)-1):
flag=False#设置交换标志
for j in range(len(nums)-i-1):
if nums[j]>nums[j+1]:
nums[j],nums[j+1]=nums[j+1],nums[j]
flag=True
if not flag:
return nums #有序
return nums
bubble_sort(nums)
print(bubble_sort(nums))
console:
[1, 2, 3]