算法总结

算法关注:算法复杂度。了解语言内建数据结构和算法的复杂度。

 

1.序列内循环数数

    a_list=list(range(30)

    a)如果要在a内不断按1-9循环,列出第9个数。前27个很方便,不断的i+1,然后到9之后归零。那27以后呢,可以还是不断i+1,如果大于30则减30,就会从头开始循环。

    b)数数的时候,不一定总是i+1的循环,如果是列出第9个,那可以每次直接i+8,。注意如果数到的数被删除,则每次i+8,如果不删除,则第一次是i+8以后每次都是i+9,因为第一次是从第一个数开始数的,那到第9个就是+8,但是第二次开始,是从第0个开始数的,所以+9

       

2.二分查找

  用while替代

   

def test_b(array,target):
    s=0
    end=len(array)-1
    while end>=s:
        mid=int((end-s)/2)+s #记得加上起始位
        if array[mid]==target:
            return mid
        elif array[mid]>target:
            end=mid-1 #已经检查过的就不要了
        else:
            s=mid+1
    return -1
def test_b1(array,lenth,target):
    mid=int(len(array)/2)
    if array[mid]==target:
        if lenth:
            mid=lenth-(len(array)-mid) #截取后要计算在原来的list中的位置
        return mid
    elif array[mid]>target:
        return test_b1(array[:mid],None,target)
    else:
        return test_b1(array[mid+1:],lenth,target)

 

 3.二叉树遍历

    二叉树就是每个节点下面都有左右两个节点的数。每个节点的最后一层可以只有一个节点,但是区分左右几点。

   3.1 层次遍历:

    从最上层开始,一层层从做到右遍历

       

 

      3.2先序搜索:

       经过这点的左边(第一次经过该点)时,记录该点

      3.3中序搜索:

       经过这点的中间(第二次经过该点)时,记录该点

      3.4后序搜索:

      经过这点的右边(第三次经过该点)时,记录改点

 

       如下图左边所示,每个二叉树都可以用下面的方式走完整棵树,如下图右边所示,每个点都会被走到三次

                

 

 

 

 

 

 

      

posted @ 2020-08-31 22:45  小鱼biubiu  阅读(162)  评论(0编辑  收藏  举报