算法
顺序表性能分析
搜索:
平均比较次数ACN(Average Comparing Number)
ACN=\sum_{i=1}^n\frac in=\frac{n+1}2
二分搜索:
平均比较次数
ACN=\log_2(n)
插入和删除:
平均移动次数AMN(Average Moving Number)
插入ANM=\sum_{i=0}^n\frac{n-i}{n+1}=\frac{n}{2}
删除AMN=\sum_{i=1}^n\frac{n-i}{n}=\frac{n-1}{2}
栈的应用——利用栈将中缀表达式转化为后缀表达式
算数操作符的栈内栈外优先级
操作符ch | # | ( | * / % | + - | ) |
栈内优先级isp(in stack priority) | 0 | 1 | 5 | 3 | 6 |
栈外优先级icp(in coming priority) | 0 | 6 | 4 | 2 | 1 |
扫描中缀表达式,将之转化为后缀表达式的算法:
初始化后的栈中只有操作符#
重复执行如下操作直到只剩下栈底操作符#
1)若扫描到的是操作数则直接输出,否则转2)
2)若扫描到的是操作符,比较当前操作符的icp与栈顶操作符的isp优先级,若icp>isp当前操作符进栈;若icp[InvalidCharacterError: "ISP弹出栈顶元素到输出序列;若ICP==ISP弹出栈顶元素但是不输出到输出序列<" did not match the Name production]