冒泡和选择

本文介绍了两种基本的排序算法:冒泡排序和选择排序,并通过代码示例展示了它们的工作原理。此外,还介绍了一个有趣的猴子选大王游戏,通过两种不同的算法实现,展示了算法设计的多样性和趣味性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 冒泡排序
    原理:
    第一轮:
    依次把列表中第一个元素与第二个元素比较,满足条件互换位置
    接着把列表的第二个元素与第三个元素比较,满足条件互换位置

    第二轮:
    把列表的第二个元素与第三个元素比较,满足条件互换位置
    把列表的第三个元素与第四个元素比较,满足条件互换位置
    .
    .
    .
    直到倒数第二个与倒数第一个比较

冒泡排序原理

l=[5,4,3,2,1]
for i in range(1,len(l)):
    for j in range(len(l)-i):
        if l[j]>l[j+1]:
            l[j],l[j+1]=l[j+1],l[j]
print(l)
  1. 选择排序
    原理:
    把列表第一个位置的元素依次与后面的每一元素比较,满足互换位置
    把列表第二个位置的元素依次与后面的每一元素比较,满足互换位置
    直到倒数第二个与倒数第一个
    选择
l=[5,4,3,2,1]
for i in range(len(l)-1):
    for j in range(i+1,len(l)):
        if l[i]>l[j]:
            l[i],l[j]=l[j],l[i]
print(l)

猴子选大王
有15只猴子,对十五只猴子依次数7,遇到7就剔除在外,直到剩下最后一个猴子,就是大王

  1. 自己写的,较麻烦
l=[]
l.extend(range(1,16))
i=0        #列表的下标
a=0        #记录删除位置的下标
while len(l)>1:
    b=i             #用来记录删除位置的下标
    if b-a+1==7:
        if b<len(l):			#说明b的位置还在l中
            d=l.pop(b)
            print(b,d)
            a=b				#记录删除的位置
        else:
            while b>=len(l):		#可能b是l长度的好几倍
                b=b-len(l)
            d = l.pop(b)
            print(b, d)
            a = b
        if len(l)-len(l[0:b])<7:        #判断删除的位置与末尾的位置是否小于7
            a=len(l[0:b])-len(l)        #记录删除的位置距末尾的位置还有几个
            i=0                         #从头开始
    i+=1
print(l)

  1. 简单的
    原理:利用计数的方式,循环列表,遇到是7的倍数就删除,直到列表长度为1
l=[]
l.extend(range(1,16))
count=0
print(l)
while len(l)>1:
    del_list = []		#删除的元素存放
    for i in l:
        count+=1		#技术
        if count%7==0:
            del_list.append(i)
    print(del_list)
    for j in del_list:
        l.remove(j)
print(l)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值