- 冒泡排序
原理:
第一轮:
依次把列表中第一个元素与第二个元素比较,满足条件互换位置
接着把列表的第二个元素与第三个元素比较,满足条件互换位置
…
第二轮:
把列表的第二个元素与第三个元素比较,满足条件互换位置
把列表的第三个元素与第四个元素比较,满足条件互换位置
.
.
.
直到倒数第二个与倒数第一个比较
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)
- 选择排序
原理:
把列表第一个位置的元素依次与后面的每一元素比较,满足互换位置
把列表第二个位置的元素依次与后面的每一元素比较,满足互换位置
直到倒数第二个与倒数第一个
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就剔除在外,直到剩下最后一个猴子,就是大王
- 自己写的,较麻烦
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)
- 简单的
原理:利用计数的方式,循环列表,遇到是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)