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. Linux基础篇学习——常见系统命令:ls,pwd,cd,date,hwclock,passwd,su,clear,who,w,uname,uptime,last,dmesg,free,ps,top

    ls 显示指定目录中的内容 ls [OPTION]... [FILE]... OPTION -a --all,显示所有文件包括隐藏文件 -l 列出长属性,显示出文件的属性与权限等数据信息 -i  列出 ...

  2. coding++:Spring Boot全局事务解释及使用(一)

    Spring 事务的入口: TxAdviceBeanDefinitionParser 解释 <tx:advice/> 这里将解析tx的配置. @Override protected Cla ...

  3. SpringCloud入门(七): Zuul 简介与使用

    Zuul 简介 Zuul 微服务网关是为Spring Cloud Netflix提供动态路由,监控,弹性,安全等服务的框架.可以和Eureka.Ribbon.Hystrix等组件配合使用. Zuul ...

  4. vue 听说你很会传值?

    前置 大小 vue 项目都离不开组件通讯, 在这里总结一下vue组件通讯方式并列出, 都是简单的例子. 适合像我这样的小白.如有错误,欢迎指正. 温馨提示: 下文没有列出 vuex, vuex 也是重 ...

  5. Python——NumPy数据存取与函数

    1.数据csv文件存贮 1.1 CSV文件写入 CSV (Comma‐Separated Value, 逗号分隔值)CSV是一种常见的文件格式,用来存储批量数据 np.savetxt(frame, a ...

  6. 小案例带你揭秘JS事件

    小案例带你揭秘JS事件 ### 什么是事件? 在js中一个事件的组成由那些呢? 谁触发事件:事件源 触发什么事件: 事件的类型 触发事件干什么事:事件处理函数 事件传播的过程 捕获阶段 就是从wind ...

  7. SpringCloud入门(九): Zuul 上传&回退&异常处理&跨域

    Zuul的上传 1.构建一个上传类 import org.springframework.web.bind.annotation.PostMapping; import org.springframe ...

  8. Servlet---request内置对象

    Request 对象: 问题: 浏览器发起请求到服务器,会遵循HTTP协议将请求数据发送给服务器. 那么服务器接受到请求的数据改怎么存储呢?不但要存,而且要保证完成性. 解决: 使用对象进行存储,服务 ...

  9. Luogu1039 侦探推理

    题目描述 明明同学最近迷上了侦探漫画<柯南>并沉醉于推理游戏之中,于是他召集了一群同学玩推理游戏.游戏的内容是这样的,明明的同学们先商量好由其中的一个人充当罪犯(在明明不知情的情况下),明 ...

  10. CCF2018 12 2题,小明终于到家了

    最近在愁着备考,拿CCF刷题,就遇到这个难题,最后搜索了一下大佬们的方法,终于解决, 问题描述 一次放学的时候,小明已经规划好了自己回家的路线,并且能够预测经过各个路段的时间.同时,小明通过学校里安装 ...