二分法

1、二分法:

li = [1,2,3,4,5,6,7,8,9]
def  foo(n):
    start = 0
    end = len(li)-1
    while start <= end :
        mid =(start+end)//2
        mid_val = li[mid]
        if mid_val == n :
            print(mid)
            break
        if mid_val < n:
            start = mid +1
            continue
        if mid_val > n :
            end = mid -1
            continue
    print('不在这个列表中')
foo(99)

2、斐波那契

def foo(n):
    if n ==1 or n==2:
        return 1
    return foo(n-1)+foo(n-2)
def index(n):
    for i  in range(1,n+1):
        print(foo(i),end='   ')
index(10)

 3、冒泡法排序

import random
def foo(li):
    for j  in range(0,len(li)-1):
        for i in range (0,len(li)-1):
            if li[i]>li[i+1]:
                li[i],li[i+1] = li[i+1],li[i]
li = [i for i in range(1000)]
random.shuffle(li)
foo(li)
print(li)

 

posted @ 2019-01-16 14:53  离人怎挽_wdj  阅读(257)  评论(0编辑  收藏  举报