python的选择排序、冒泡排序、水仙花、斐波那契及鸡兔同笼

冒泡排序:

#冒泡排序(降序)
#冒泡排序要排序n个数,由于每遍历一趟只排好一个数字,
#则需要遍历n-1趟,所以最外层循环是要循环n-1次,而
#每次趟遍历中需要比较每归位的数字,则要在n-1次比较
#中减去已排好的i位数字,则第二层循环要遍历是n-1-i次
bb=[6,5,8,2,45,3,9]
for ii in range(len(bb)-1):
    for jj in range(len(bb)-1-ii):
        if (bb[jj+1]>bb[jj]):
            temp=bb[jj]
            bb[jj]=bb[jj+1]
            bb[jj+1]=temp
print(bb)

选择排序:

#选择排序(升序)
#先从序列中,找到最小的元素,放在第一个位置
#之后找到第二小的元素,放在第二个元素,以此类推
bb=[6,5,8,2,45,3,9]
for i in range(len(bb)-1):
    min=i
    #遍历一次找到一个最小值下标
    for j in range(i+1,len(bb)):  #这里的range()前闭后开,若要取到len(bb)-1第二个参数只能为len(bb)
        if(bb[min]>bb[j]):
            #将最小的值赋给bb[min]
            temp1=bb[j]
            bb[j]=bb[min]
            bb[min]=temp1
print(bb)

 水仙花:

#水仙花数(自恋数)
# 一个数的各位数的3次幂的和等于它本身
j=[]
for i in range(100,1000):
    a=i%10
    b=(i//10)%10
    c=i//100
    if(i==a**3+b**3+c**3):
       j.append(i)
print(j)
print(879 in j)

鸡兔同笼:

#鸡兔同笼
a=120 #
b=350 #
for x in range(1,a):#x为鸡的头数
    y=a-x #兔子数量
    if(2*x+4*y==350):
        print("鸡有{}只,兔有{}只 ".format(x,y))

斐波那契:

#自定义迭代器feibo(n)
def feibo(n):
    a,b,count=1,1,1
    while True:
        if(count>n):
            return
        yield a
        a,b=b,a+b
        count+=1
iter1=feibo(10)
while True:
    try:
        print(next(iter1),end=" ")
    except StopIteration:

        break

print("\n")

 

posted @ 2019-05-06 11:26  人迹罕至的那条路  阅读(269)  评论(0编辑  收藏  举报