zoukankan      html  css  js  c++  java
  • 第1章:绪论:重要算法类型——《算法设计与分析基础》笔记

    重要算法类型

    整理完《算法设计与分析基础》的章节笔记与习题后,考虑根据算法求解的问题领域做个整理。

    重要算法类型

    1.排序

    稳定(原下标作为第二关键字),或维护每个元素所在的序号 作为第二排序关键字排序两次?

    在位(不需要额外存储空间)

    重复

    最优最差效率

    平均效率

    2.查找

    顺序

    折半(要求有序,支持随机访问)

    元素可变的情况——依赖于数据结构

    支持增,删,改,高效找(特定属性元素)的数据结构

    3.字符串匹配问题

    正文中搜索模式 

    已搜索部分正文片段=模式的开头片段 

    4.图问题

    可达性——连通性

     最小生成树

    两两最短路径

    单节点最短路径

    5.组合问题

    6.几何问题

    7.数值问题

    元操作

    排序,计数,

    习题:

    1.1

    小于n的最大平方数

    [0,n]二分查找

    两个已排序可重复数组,选出所有相同元素

    方法1

    长数组作为正文,短数组作为模式,

    找到对齐:模式与正文头部后移一项

    放弃模式头部:正文头部大于模式头部:模式头部后移一项

    终结条件:两者之一搜索至尾部

    方法2

    计数,根据技术结果得到新数组

    最大比较次数:完全不匹配:正文长度

    出现一次匹配:归结为模式去头部的匹配过程,所以不会超过正文长度

    欧几里得算法速度与gcd(m,n),min(m,n)中间整数数量的关系

    gcd正确性

    欧几里得游戏:找出所有差的可能

    所有的差满足最大公约数的倍数

    扩展欧几里得算法:mx+ny=d d=gcd(m,n) 

    用两个互质的数构造出1

    丢番图方程求解:ax+by=c,abc任意

    n个硬币,依次按i的倍数翻转,i=1……n

    最终正面数

    所有因子的个数

    因子的组合数

    1.2

    狼羊白菜过河

    图(自动机)

    过桥问题:4人1手电,最短时间

    根据给定时间,排除部分情况

    三角形面积公式

    根号p(p-a)(p-b)(p-c) p为一半周长?

    进制间转换:

    以十进制为中转

    幂乘关系进制按位处理

    不断除以权重得到低位——高位

    求解π

    数组中最接近的两个数的差

    排序(维护最小差值,存在0,返回)

    每种排序中更明确的语义

    1.3

    对数组中每个元素,统计比他小的元素个数,排序

    七桥问题:欧拉回路:遍历所有边,回到原点

    哈密顿回路:遍历所有的点,回到原点?

    图着色

    图块:节点

    相邻关系:节点间相邻

    着色:节点指派有限数目颜色,保证相邻节点颜色不同

    对称问题:使用最少颜色

    判断线段存在交点

    方法1

    求两直线交点,判断是否落在两线段上

    方法2

    四点闭包,判断端点出现顺序是否交错

    1.4

    删除数组元素

    数组要求有序:左到右依次覆写

    无序:交换

    维护数组长度

    有序线性表查找

    数组:二分

    链表:遍历

    不存在的元素(min max或max min)

    链表缓存上次结果

    邻接矩阵的信息

    完全图

    有圈(指向自身的节点)

    孤立节点

    自由数——有根树?

    二叉树高度不等式

    退化成线

    完全二叉树

    用数据结构实现优先队列

    无序数组

    有序数组

    二叉查找树

    变位词:相同组合,不同排列

  • 相关阅读:
    揭开Future的神秘面纱——任务取消
    阻塞队列和生产者-消费者模式
    ExecutorService——<T> Future<T> submit(Callable<T> task)
    ExecutorService接口概要
    Executor简介
    使用显式的Lock对象取代synchronized关键字进行同步
    SingleThreadExecutor(单线程执行器)
    后台线程(daemon)
    加入一个线程
    计算机网络的一些英文缩写词
  • 原文地址:https://www.cnblogs.com/qmcj/p/9095752.html
Copyright © 2011-2022 走看看