python 冒泡排序

冒泡, 插排

 

 

lst = [22 , 2 , 55 , 6 , 4 , 1]

for s in range(len(lst)):     #  限制下面的循环次数

  i = 0   # lst的索引是从0开始的,所以限定i 的初始值为0

  while i < len(lst) - 1:  # lst 的 len(lst)值是从1开始的, 并且 进行比较数字移动到i相应位置 的时候不需要再进项下面的比较,  所以在len(lst)的基础上减去1.

    if lst[i] > lst[i + 1]:  # 进行比较    并解包 调换位置.

      lst[i] , lst[i + 1] = lst[i + 1] , lst[i]

    i = i + 1 #  进行累加,是循环持续进行.

print(lst)#  打印最后结果

 

 

斐波那契数列:

 

# 1、斐波那契数列:1, 2, 3, 5, 8, 13, 21.....根据这样的规律,编程求出400万以内最大的斐波那契数,并求出他是第几个斐波那契数。
# n1 = 3
# n2 = 5
# num = n1 + n2
# n1 = n2
# n2 = n1 + n2
#1、我首先要有前两个数

 

方法一   递归:

def fib(num):
    if num == 1:
        return 1
    elif num == 2:
        return 2
    return fib(num - 1) + fib(num - 2)

方法二:

def fib2(num):
    n1 = 1
    n2 = 2
    if num == 1:
        return 1
    elif num == 2:
        return 2
    else:
        for i in range(3,num + 1):#range(3,3)
            n1 , n2 = n2 , n1 + n2
        return n2

fib2(33)

水仙花数方法:

for num in range(100, 1000):
    geWei = num % 10
    baiWei = int(num / 100)
    shiWei = int((num - baiWei * 100) / 10)
    sum = geWei**3 + shiWei**3 + baiWei**3
    if sum == num:
        print("%d是水仙花数" % num)


for n in range(100, 1000):
    i = int(str(n)[0])
    j = int(str(n)[1])
    k = int(str(n)[2])

    if n == i**3 + j**3 + k**3:
        print(n)

 

posted @ 2018-07-12 15:58  向往灬  阅读(176)  评论(0编辑  收藏  举报