python基础(算法)

1.一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
def jumpFloolr(number):
    if number in (1,2):
        return number
    return jumpFloolr(number-1)+jumpFloolr(number-2)
b=jumpFloolr(10)
print(b)

2.等边三角形

num=9
for i in range(num,0,-1):
    print(i * ' ' + (num + 1 - i) * '*' + +(num - i) * '*')
3.直角三角形
i = 0
while i < 5:
     j = 0
     while j <= i:
         print("*", end="")
         j += 1
     print("")
     i += 1
斐波那契数列,又称黄金分割数列、因数学家列昂纳多·
# 斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”,
# 指的是这样一个数列:1、1、2、3、5、8、13、21、34、
# ……在数学上,斐波纳契数列以递归的方法定义。
lis = []
for i in range(20):
    if i == 0 or i == 1:  # 第1,2项 都为1
        lis.append(1)
    else:
        lis.append(lis[i - 2] + lis[i - 1])  # 从第3项开始每项值为前两项值之和
print(lis)

冒泡排序

def buttle_sort(li):
    for i in range(len(li)-1):
        for j in range(len(li)-i-1):
            if li[j] > li[j+1]:
                li[j],li[j+1] = li[j+1],li[j]
li = [3,6,4,8,5,3]
buttle_sort(li)
print(li)

二分查找

def func(alist, item):
    low = 0
    high = len(alist) - 1
    n = 0
    while low <= high:
        mid = int((low + high) / 2)
        n += 1
        if alist[mid] == item:
            return mid
        if alist[mid] < item:
            low = mid + 1
        else:
            high = (mid - 1)
    return None


m = [1, 2, 3, 4, 8, 9, 11, 12, 14, 18, 19, 20, 28]
print(func(m, 14))

 

快排

def quick(list):
    if len(list) < 2:
        return list

    tmp = list[0]  # 临时变量 可以取随机值
    left = [x for x in list[1:] if x <= tmp]  # 左列表
    right = [x for x in list[1:] if x > tmp]  # 右列表
    return quick(left) + [tmp] + quick(right)

li = [4,3,7,5,8,2]
print quick(li)  # [2, 3, 4, 5, 7, 8]

 

posted @ 2020-12-16 20:12  王彬。  阅读(179)  评论(0)    收藏  举报