栈的应用 中缀转化为后缀 二叉树 冒泡排序 二分查找

#栈的应用
#1,中缀表达式转换成后缀表达式
#2,后缀表达式的计算
#例如:中缀的表达式:1+23/4
#后缀表达式:操作数在前,操作符在后
#1+2
3/4–> 1 2 3 4 1 - / +
#一个栈的空间存一个字节,一个操作符一次运算两个操作数
在这里插入图片描述树 与 二叉树
#计算机中的树一般是指’倒悬树’–即树根在上,分支在下。
#例如,计算机当中的文件管理:一个文件夹下面还有许多小的文件夹。
#二叉树:
#性质1,在第i层上,节点的个数为2
*(i-1)个。
#性质2,深度为k的二叉树至多有2**k-1个节点(k>=1)。
#性质3,对任何一棵二叉树,若叶子节点为n0,度为2的节点数为n1,则n0=n1+1
#度:除了叶子结点外的所有节点-1,最后一层为叶子结点。【有几个分支,就是几度】
#度的节点数=度+1,叶子结点=度的节点数+1

#二叉树得遍历:
#1,DLR:先(根)序遍历
#2,LDR:中(根)序遍历
#3,LRD:后(根)序遍历
#重点在DLR:
#1,深度优先:先将第一个分支遍历结束之后再遍历另一个分支。
#2,广度优先:从上到下,从左到右,按层遍历。

#满二叉树:
#深度为k且有2**k-1个节点的二叉树称为满二叉树。
#满二叉树的特点:每一层上的结点数总是最大结点数。(左右对称)
#完全二叉树:如果深度为k,由n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1到n的结点一一对应,该二叉树称为完全二叉树,–从上到下,从左到有,不断编号。
#不完全二叉树:不按编号。

#二叉树的存储结构:自上而下、自左至右
#链式存储结构
#二叉链表结点,有三个域:一个数据域,两个分别
#指向左右子结点的指针域
#三叉链表结点:除二叉链表的三个域外,再增加一
#个指针域,用来指向结点的父结点

在这里插入图片描述#算法
#冒泡排序

list_01 = [2,3,1,5]
print('排序之前:',list_01)
geshu = len(list_01)
for i in range(0,geshu-1):
#这个循环负责设置冒泡排序进行的次数
#(比如说n个数,则只要进行n-1次冒泡,就可以把这n个数排序好)
    for j in range(0,geshu-i-1):
#这里这个j呢就是控制每一次具体的冒泡过程,我们第一次冒泡需要冒几次,也就是说需要比较几次,
#假如有三个数,那只需要两次就可以了,当下一次时,最后一个
#已经是有序的了,所以说少冒泡一次,所以这里j每次都会减去i的值”
        if list_01[j] >list_01[j+1]:
            list_01[j],list_01[j + 1] = list_01[j+1],list_01[j]
print('升序:',list_01)

list_1=[2,3,1,5,0,6,-1]
for i in range(0,len(list_1)-1):
    for j in range(0,len(list_1)-i-1):
        if list_1[j]<list_1[j+1]:
            list_1[j],list_1[j+1]=list_1[j+1],list_1[j]
print('降序',list_1)

在这里插入图片描述在这里插入图片描述
#二分查找:前提是有序的
#二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。
#但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
#要求:1.必须采用顺序存储结构。
#2.必须按关键字大小有序排列
#二分查找:前提是有序的


lis=[1,10,3,4,9,8,5,2,6,7]
lis.sort()
first=0
last=len(lis)-1
num=int(input('输入:'))
while first<=last:
    mid = (first + last) // 2
    if num==lis[mid]:
        print('找到了',mid)
        break
    elif num>lis[mid]:
        first=mid+1
    elif num<lis[mid]:
        last=mid-1
    else:
        print('没找到')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值