数据结构入门第二天

中后缀表达式

1,中缀表达式就是操作数在两边,操作符在中间的表达式,就是普通的1+1,就是中缀表达式。
2,后缀表达式是操作符在两边的表达式。就像11+。
3,将中缀表达式转化成后缀表达式:中缀表达式存储在栈里面,在拿取的时候会在栈的最上面开始向下读取。每次读取是操作符的时候先搁置在一边,当遇到操作数的时候,将操作数先写到最近一个操作符的右边,下一个操作数再写到左边。如下图在这里插入图片描述
循环队列
将队列的首尾相连就形成了循环队列。例如列表a=[1,2,3,345,567,8],a[-1]是8,这样就是一个循环队列。

树和二叉树

计算机中的树是倒着的,与其说是树,不如说是根,自上而下生根发芽。这样每个元素都会有一定的联系。如下图在这里插入图片描述
二叉树
上图就是一个二叉树,每个节点向下连接着两个节点。树的最下端没有向下的节点的时候就是叶子,从下向上树第k行的节点,其度为k。
性质一:由图可以轻易看到,第i行有2*(i-1)个节点。
性质二:深度为k的树,由等比数列求和公式得,一共有2*i-1个节点。
性质三:对任何一个二叉树,若其叶子节点数为n,度为2节点数位k,则n=k-1.此性质可以由等比数列求和公式轻易推导得,不给证明。
二叉树的遍历
DLR:先序遍历,先找中间再找右边再左边。
LDR:中序遍历,先找左边再找中间再右边。
LRD:后序遍历,先找右边再找中间再左边。
例下图在这里插入图片描述
根据DLR:ABCDEFGHK
根据LDR:BDCAEHGKF
根据LRD:DCBHKGFEA

算法

冒泡排序
a=[1,324,65,76,43,76,43,8743,75]
如列表a,取出列表中的第一个和第二个比较,过a[0]>a[1]将两者交换,再将a[0]与a[2]比较,以此类推,直到最后一个数为止,这样就比较了len(a)-1的累加次。代码如下:

list_1=[1,2,3,56,3,76,43,98,34,987,23,23,342,5,8,0]
for i in range(0,len(list_1)-1):
    for j in range(i,len(list_1)):
        if list_1[i]>list_1[j]:
            list_1[i],list_1[j]=list_1[j],list_1[i]
print(list_1)

第二种方法是将前两个数比较,一直到最后。代码如下:

list_1=[1,2,3,56,3,76,43,98,34,987,23,23,342,5,8,0]

for i in range(0,len(list_1)-1):
    for j in range(i,len(list_1)-1):
        if list_1[j]>list_1[j+1]:
            list_1[i],list_1[j]=list_1[j+1],list_1[i]
print(list_1)



二分查找
二分查找的前提是有序,先拿出列表中间的元素mid,将mid和输入的数num进行比较,如果num大于mid则表明num在mid—end之间,如果num<mid则num在0—mid之间。具体代码如下。

a=[12,8,344,54,576,5,5,43,42,34,5,6,1]
first=0
last=len(a)-1
num=int(input(":"))
while first<=last:
    mid=(first+last)//2
    if a[mid]==num:
        print("找到了")
    elif a[mid]>num:
        first=mid+1
    elif a[mid]<num:
        last=mid-1
else:print("好海鸥,老子木有找到你的那个数")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值