C#中标准数据结构和算法的即插即用类库项目

GitHub:https://github.com/aalhour/C-Sharp-Algorithms

Watch: 307 Star: 3.4k Fork: 910

                                      o---o    |   |
/ --O---O--
O | |
\ --O---O--
o---o | | O o o--o o--o o---o o-O-o o--O--o o o o o o--o
/ \ | o o o | | | | | | |\ /| |
o---o | | o-o | | O--Oo | | O---O | \o/ | o--o
| | | o | o o | \ | | | | | | |
o o O---o o--o o--o o \o o-O-o o o o o o o---o

什么是C# 算法

标准数据结构和算法的即插即用类库项目,使用C#编写。它包含75多种数据结构和算法,被设计为面向对象的隔离组件。即使该项目出于教育目的而开始,但已实现的数据结构和算法都是标准、高效、稳定和经过测试的。

背后的故事

该项目最初是作为面试准备项目开始的。但是,在收到有关reddit的大量积极响应,并注意到一些GitHubers为它做出进一步贡献而感到兴奋之后,该项目的含义有所不同。因此,我决定继续对其进行维护,以作为C#中数据结构和算法实现以及这些主题下我自己的研究副项目的参考。

描述

解决方案层次结构

这是一个C#.NET解决方案,它包含三个子项目:

  1. Algorithms: 一个类库项目。包含算法实现
  2. Data Structures: 一个类库项目。包含数据结构实现
  3. UnitTest:对算法和数据结构实现的测试项目

要求

  1. .NET Core>=2.0
  2. XUnit

投稿者须知

如果你想为C#算法做出共享,请确保你首先查看贡献准则

数据结构

Linear:

  • Skip List
  • Array List
  • Stack
  • Queue
  • Single-Linked List
  • Double-Linked List

Circlar:

  • Circular Buffer

Heaps:

  • Binary-Min Heap
  • Binary-Max Heap
  • Binomial-Min Heap

Priority Queues:

  • Min-Priority Queue
  • Key-value Priority Queue

Hashing Functions:

  • Prime Hashing Family
  • Universal Hashing Family

Hash Tables:

  • Chained Hash Table
  • Cuckoo Hash Table
  • Open-Addressing Hash Table

Sorted Collections(Tree-based):

  • Sorted List
  • Sorted Dictionary

Trees:

  • Basic Search Trees:

    • Binary Search Tree

      • Map versions(Supports key-value pairing; nodes indexed by keys)
    • (Augmented) Binary Search Tree
    • Ternary Search Tree
  • Self-Balancing Trees:
    • AVL Tree
    • B-Tree
    • Red-Black Tree
      • Map version(supports key-value pairing;nodes indexed by keys)
  • Prefix Trees:
    • Trie
    • Trie Map (associative prefix tree;complete words are keys to records)

Graphs:

  • Undirected Graphs:

    • Clique Graphs
    • Undirected Sparse Graph
    • Undirected Dense Graph
  • Undirected Weighted Graphs:
    • Undirected Weighted Sparse Graph
    • Undirected Weighted Dense Graph
  • Directed Graphs:
    • Directed Sparse Graph
    • Directed Dense Graph
  • Directed Weighted Graphs:
    • Directed Weighted Sparse Graph
    • Directed Weighted Dense Graph

算法

排序算法(Sorting):

  • Bubble Sort
  • Bucket Sort
  • BST Sort
  • Comb Sort
  • Counting Sort
  • Cycle Sort
  • Gnome Sort
  • Heap Sort
  • Insertion Sort
  • LSD Radix Sort
  • Merge Sort
  • Selection Sort
  • Shell Sort
  • OddEven Sort
  • PigeonHole Sort
  • Quick Sort

Searching:

  • Binary Search

Graphs:

  • Graph Search:

    • Depth-Frist Searcher
    • Breadth-First Searcher
  • Shortest Paths:
    • Breadth-First SPs
    • Bellman-Ford SPs
    • Dijkstra SPs
    • Dijkstra All-Pairs SPs
  • DFS Applications:
    • Cycles Detector
    • Topological Sorter
  • BFS Applications:
    • Connected Components
    • Biparite Graphs Coloring

Tree:

  • Resursive Binary Tree Walker

    • Methods: PrintAll, ForEach, Contains and BinarySearch. Traversal Modes: Preorder, Inorder & Postorder

Strings:

  • Permutations and Anagrams
  • Edit Distance
    • Uses a generic custom class for passing costs: EditDistanceCostsMap

Numeric:

  • Binomial Coefficients
  • Catalan Numbers
  • Greatest Common Divisor

Visualization:

  • Tree Drawer

[GitHub] 75+的 C# 数据结构和算法实现的更多相关文章

  1. GitHub上最火的、最值得前端学习的几个数据结构与算法项目!没有之一!

    Hello,大家好,我是你们的 前端章鱼猫. 简介 前端章鱼猫从 2016 年加入 GitHub,到现在的 2020 年,快整整 5 个年头了. 相信很多人都没有逛 GitHub 的习惯,因此总会有开 ...

  2. 【学习总结】java数据结构和算法-第二章-数据结构和算法概述

    总目录链接 [学习总结]尚硅谷2019java数据结构和算法 github:javaDSA 目录 数据结构和算法的关系 几个实际编程中的问题 线性结构和非线性结构 数据结构和算法的关系 几个实际编程中 ...

  3. PTA数据结构与算法题目集(中文) 7-5

    PTA数据结构与算法题目集(中文)  7-5  堆中的路径 7-5 堆中的路径 (25 分)   将一系列给定数字插入一个初始为空的小顶堆H[].随后对任意给定的下标i,打印从H[i]到根结点的路径. ...

  4. 数据结构和算法(Golang实现)(26)查找算法-哈希表

    哈希表:散列查找 一.线性查找 我们要通过一个键key来查找相应的值value.有一种最简单的方式,就是将键值对存放在链表里,然后遍历链表来查找是否存在key,存在则更新键对应的值,不存在则将键值对链 ...

  5. 数据结构与算法JavaScript (一) 栈

    序 数据结构与算法JavaScript这本书算是讲解得比较浅显的,优点就是用javascript语言把常用的数据结构给描述了下,书中很多例子来源于常见的一些面试题目,算是与时俱进,业余看了下就顺便记录 ...

  6. javascript数据结构与算法--高级排序算法

    javascript数据结构与算法--高级排序算法 高级排序算法是处理大型数据集的最高效排序算法,它是处理的数据集可以达到上百万个元素,而不仅仅是几百个或者几千个.现在我们来学习下2种高级排序算法-- ...

  7. php数据结构与算法

    php面试题之二--数据结构和算法(高级部分) 二.数据结构和算法 1.使对象可以像数组一样进行foreach循环,要求属性必须是私有.(Iterator模式的PHP5实现,写一类实现Iterator ...

  8. php面试题之二——数据结构和算法(高级部分)

    二.数据结构和算法 1.使对象可以像数组一样进行foreach循环,要求属性必须是私有.(Iterator模式的PHP5实现,写一类实现Iterator接口)(腾讯) <?php class T ...

  9. python 下的数据结构与算法---1:让一切从无关开始

    这段时间把<Data Structure and Algorithms with python>以及<Problem Solving with  Algorithms and Dat ...

随机推荐

  1. IO多路复用(IO Multiplexing)

    什么是IO多路复用 为什么要有IO多路复用 作者总结 遵循学习新知识的三部曲:是什么?为什么?怎么用? 作者前言:IO多路复用本质上是网络通信过程中的一个技术名词. 什么是IO多路复用 一个用机场管理 ...

  2. 深度学习vs机器学习 | 这些本质区别你知道多少?

    目录: 数据相关性 硬件依赖性 特征工程 解决问题方法 执行时间 可解释性 一.数据相关性 深度学习与传统机器学习最重要的区别是,随着数据量的增加,其性能也随之提高.当数据很小的时候,深度学习算法并不 ...

  3. 使用webhooks进行代码的自动化部署

    AutoMaticDeployment---自动部署 项目简介 使用Github的webhooks进行代码的自动化部署 本项目是个人最近搞的一个小工具,自己最近在用hexo部署个人博客(地址:http ...

  4. 2020年最新版Web前端学习路线图-前端小白入门必读-pink老师推荐

    Hello,大家好,相信很多学习前端的小伙伴,会有很多的疑惑: 我要学习那些技术? 我要到哪里去学习这些技术呢? 学习这些技术的目的对就业有什么帮助呢? 我学到什么程度可以胜任工作? ... 这里,p ...

  5. python接口调用把执行结果追加到测试用例中

    python操作excel的三个工具包如下,注意,只能操作.xls,不能操作.xlsx. xlrd: 对excel进行读相关操作 xlwt: 对excel进行写相关操作 xlutils: 对excel ...

  6. EntityFramework Core 3.x添加查询提示(NOLOCK)

    前言 前几天看到有园友写了一篇关于添加NOLOCK查询提示的博文<https://www.cnblogs.com/weihanli/p/12623934.html>,这里呢,我将介绍另外一 ...

  7. coding++:Semaphore—RateLimiter-漏桶算法-令牌桶算法

    java中对于生产者消费者模型,或者小米手机营销 1分钟卖多少台手机等都存在限流的思想在里面. 关于限流 目前存在两大类,从线程个数(jdk1.5 Semaphore)和RateLimiter速率(g ...

  8. mysql的Ft_hints: no_ranking

    是不是发现找遍全网也没有找到相关资料? 巧了,我也是,所以我这里来进行一次大胆分析(基本靠猜) 在使用mysql的fulltext索引(全文索引)时,使用explain则会在extra中出现这句提示: ...

  9. POJ2182 Lost Cows 题解

    POJ2182 Lost Cows 题解 描述 有\(N\)(\(2 <= N <= 8,000\))头母牛,每头母牛有自己的独一无二编号(\(1..N\)). 现在\(N\)头母牛站成一 ...

  10. 一夜搞懂 | JVM 字节码执行引擎

    前言 本文已经收录到我的 Github 个人博客,欢迎大佬们光临寒舍: 我的 GIthub 博客 学习导图 一.为什么要学习字节码执行引擎? 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一 ...