《算法笔记》入门篇笔记

PAT乙级的考点总结
https://book.douban.com/subject/26827295/

计算机组成原理

数据的表示与运算

  • 数字
    因为位数限制,我们需要考虑溢出问题,大整数运算时,为了避免溢出,我们需要用数组来存储数据,模拟手工运算。
  • 字符串
    ASCII码,八位,二进制
    考点:数字与字母转换,大写字母与小写字母的转换,建二维字符数组建立字符串和数字之间的关系,散列思想:字符串映射为数字处理

寻址方式—首地址+偏移量

  • 顺序存储
    逻辑相邻的元素,物理位置也相邻,通过首地址加索引乘偏移量来寻址。
    可以利用索引是数字的特点,根据数组索引与数字相等来统计数字出现次数和数字是否出现。
  • 指针
    指针具有类型,类型的本质是为了说明该数据的偏移量有多大。

数学问题

进制转换

非十进制转换为十进制
十进制转换为非十进制
进制转换的衍生,日期的处理,通常两类题,时间段与时间格式的相互转换。

两类特殊数字的表示和计算

  • 分数
  • 大整数
    共同点:用结构体来表示,考虑进位问题

筛选特殊属性的数

  • 素数
  • 最大公约,最小公倍
  • 质因数

递推

可以得到一个递推公式来计算,通常是组合数学

算法初步

查找

问题规模较小,通常使用遍历来查找,常见题型,查找一组数据的最大最小

排序

使用STL的sort函数
自己定义cmp来实现复杂的排序操作

散列

基础为数字与字母转换等,通过将字母转换为数字,将数字作为索引来统计出现的个数或者是否出现。

贪心

每步查找最大或者最小,以此来或者最后的最优解。

二分

基础为二分查找,进阶使用为方程求解等

归并

多个序列合并为一个序列的过程

打表

通过预先计算得到一个数据表,来避免每次重复计算,将计算转变为查找操作,运用了空间换时间的思想。

点赞