- 找最大值,找到放最右边
- 首先从左向右 每两个数据一次比较 如果左侧的数据比右侧的大 交换两个数据 比完一轮后 得到一个最大值(此时在交换的过程中移到了最右边)
- 然后 不停的重复 上一步 ,得到第二大的值…得到第三大的值
代码演示
# 找最大值,找到放最右边
# 首先从左向右 每两个数据一次比较 如果左侧的数据比右侧的大 交换两个数据 比完一轮后 得到一个最大值(此时在交换的过程中移到了最右边)
# 然后 不停的重复 上一步 ,得到第二大的值....得到第三大的值
def hehe(mylist):
# 列表长度
length = len(mylist)
# 11个数据 比较11轮
for i in range(length - 1):
# -1因为:range是0开始的 , 第i轮比较的时候,有i个数据不用比,所以-i
for j in range(length - 1 - i):
# 如果 左边的数据 大于 右边的
if mylist[j] > mylist[j + 1]:
# 调换位置
mylist[j], mylist[j + 1] = mylist[j + 1], mylist[j]
if __name__ == '__main__':
list01 = [10, 4, 9, 43, 5, 32, 23, 7, 16, 8, 12]
hehe(list01)
print(list01)
规律 :
有 11 个数据
比较10 轮 得到十个最大值
n 个 数据 比较 n-1 轮
每一轮比较几次?
- 第一轮 有11个数据 比较10次
- 第二轮 有10个数据 比较9次
- 第三轮 有9个数据 比较8次
代码中第一个for 是记录比较第几轮,
第二个for 是记录 n轮中比较的第几次