SailHe / archives-algorithm

算法归档, 主要是C/CPP

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

archives-algorithm

算法归档, 主要是C/CPP 含有VS2017 的配置文件

该解决方案下有多个子项目,其中:

  1. AlgorithmLearning 用于平时学习,包括oj的算法练习,以及一些未完成的算法或其它程序

  2. 主项目archives-algorithm 用于测试 DSAUtilityExtension 生成的Dll库和算法

    • 测试概览(测试细节的完成情况请参考3中项前的待办; 括号内的内容表示测试用程序所在的文件名称)
      • 数据结构测试
        • 线性结构
      • 进制转换测试
      • 数学相关测试
      • 大数相关测试
      • 随机数发生器测试 (RadixTester)
  3. DSAUtilityExtension 是从项目1和2中提取出的相对稳定, 具有一定复用性的程序('*'号表示只实现了局部或是实现得不完善)

    • 数据结构
      • 线性结构
        • 链接线性表
          • 虚拟(VirtualList 使用数组作为虚拟内存构造链表)*
          • 单向链接表
          • 双向链接表(未实现)
        • 顺序线性表(动态增长数组 PS 实现的比较简单)*
        • 堆栈
          • 链接堆栈
        • 队列(Queue 接口)
          • 链接队列(LinkedQueue)
          • 双端队列(Deque)
          • 优先队列(使用堆实现)*
        • 多项式
      • 查找结构(不包含搜索树)
        • 跳表(未实现)*
        • 并查集
      • 树(一般情况下 子级表示继承关系)
        • 二叉树
          • 二叉搜索树
            • AVL树
          • Huffman树
            • 数组式(没有继承关系)
            • 树式(继承于二叉树)
          • 表达式树(ExpressionTree)*
            • 前缀
            • 中缀
            • 后缀
          • 静态二叉树
            • 静态二叉搜索树(虚继承了静态二叉树, 二叉搜索树; PS 这个实现有点欠妥)
            • 完全静态二叉搜索树
                • 最大堆
                • 最小堆
      • 图(接口类; 无向 || 有向; 计权存边; 此外还有一个模板图 实现之后感觉没啥必要 完全可使用这个基本的替代)
        • 邻接矩阵图(std::vector+std::vector)
        • 邻接表图(std::vector+std::list)
      • 坐标地图类(等权存点 4方向 || 8 方向 || 拓展方向)
    • 大数相关(基本都支持string直接或间接参与运算)
      • 大数类*
        • 无限制加法
        • 无限制乘法
        • int32范围减法
        • int32范围除法
        • 乘数int32范围阶乘
        • 补码减法*
      • 进制转换器类(Transition 无限制大小)
        • 基于二进制的转换器
        • 基于十进制的转换器
    • 其它
      • Point相关
      • Sub(下标)相关
      • 三角形类
      • 分数类
    • 算法(参见拓展空间 文件名: ExtendSpace.h PS: 名称可能不怎么合适; 分类可能不准确甚至有错误; +表示需要测试用例)
      • 标准拓展(StandardExtend)
        • 略(与IO有关的函数/模板 和 其它辅助函数/模板)
      • 实用拓展拓展(Utility)
        • 二维数组列区间翻转
        • 二维数组循环列移动+
        • 最长递增子序列
        • 排序
          • 冒泡
          • 选择
          • 希尔
      • 数学拓展(MathExtend)
        • 辅助模板
          • 向量加法模板
          • 矩阵乘法模板
        • 查找
          • 二分查找模板(可使用STL替换 故功能较简陋)
          • 三分法求一元函数的区间最小解
          • 错排构建函数
          • 大数整除判断函数
          • 子串删除函数
        • 数论
          • 逆序数
          • 进制相关的一些小算法(略)
          • 快速阶乘
          • 快速幂
          • 任意底数对数
          • 阶乘表构建
          • 组合数
          • 排列数
          • 素数判断
          • 真因子和
          • 真因子和表构建
          • 因子数目
          • 开方函数(效率不如STL)
          • 方差
          • 卡塔兰数
          • N边最大交点数计算函数
          • 菲波纳契数表构建函数
          • 欧几里德算法
          • 拓展的欧几里德算法
          • 线性方程的最小非负整数解求解函数
          • 模逆元
          • **剩余定理
          • 欧拉函数
          • 巴什博弈
        • 背包算法
          • 零壹过程
          • 完全背包过程
          • 多重背包过程 - 范围数字全排列 - 范围数字全排列(字典序) - 字符串匹配字符计数 - 回文字串判断(递归实现) - 括号匹配 - 杨辉三角构建函数
      • 图论(此处算法实现于图接口中)
        • DFS(回溯式)
        • BFS
        • 单源最短路径问题统一函数
          • Dijkstra(无负权边的情况)
          • SPFA
        • 多源最短路问题统一函数
          • FloydWarshall
        • 拓扑排序
      • 其它
        • 随机数发生器
          • 计算机可表示的有理数范围随机数
          • 理数概率检测(有理数的分数形式做为参数)
          • 支持类型
            • unsigned
            • int32
            • double
        • 回溯搜索
  4. InterfaceForDotNet 是基于DSAUtilityExtension的 C# 接口

PS:

  1. 若在X64下改动了DSAUtilityExtension中的内容, 但未见效果, 可能是此时引用的仍是X86下内容的原因 这通常发生在一个既有x86又有x64的dll被一个只有x86的程序引用的时候, 此时即使配置显示的是x64, 但实际当前项目不一定 (参考AlgorithmLearning引用DSAUtilityExtension)
  2. 对于 模板; 结构体; 类 : #include"../../archives-algorithm/src/ExtendSpace.h" 是可行的
  3. 配置后 #include"./ExtendSpace.h"

About

算法归档, 主要是C/CPP


Languages

Language:C++ 99.6%Language:C 0.4%