[GitHub] 75+的 C# 数据结构和算法实现
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解决方案,它包含三个子项目:
Algorithms: 一个类库项目。包含算法实现Data Structures: 一个类库项目。包含数据结构实现UnitTest:对算法和数据结构实现的测试项目
要求
- .NET Core>=2.0
- 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
- Binary 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# 数据结构和算法实现的更多相关文章
- GitHub上最火的、最值得前端学习的几个数据结构与算法项目!没有之一!
Hello,大家好,我是你们的 前端章鱼猫. 简介 前端章鱼猫从 2016 年加入 GitHub,到现在的 2020 年,快整整 5 个年头了. 相信很多人都没有逛 GitHub 的习惯,因此总会有开 ...
- 【学习总结】java数据结构和算法-第二章-数据结构和算法概述
总目录链接 [学习总结]尚硅谷2019java数据结构和算法 github:javaDSA 目录 数据结构和算法的关系 几个实际编程中的问题 线性结构和非线性结构 数据结构和算法的关系 几个实际编程中 ...
- PTA数据结构与算法题目集(中文) 7-5
PTA数据结构与算法题目集(中文) 7-5 堆中的路径 7-5 堆中的路径 (25 分) 将一系列给定数字插入一个初始为空的小顶堆H[].随后对任意给定的下标i,打印从H[i]到根结点的路径. ...
- 数据结构和算法(Golang实现)(26)查找算法-哈希表
哈希表:散列查找 一.线性查找 我们要通过一个键key来查找相应的值value.有一种最简单的方式,就是将键值对存放在链表里,然后遍历链表来查找是否存在key,存在则更新键对应的值,不存在则将键值对链 ...
- 数据结构与算法JavaScript (一) 栈
序 数据结构与算法JavaScript这本书算是讲解得比较浅显的,优点就是用javascript语言把常用的数据结构给描述了下,书中很多例子来源于常见的一些面试题目,算是与时俱进,业余看了下就顺便记录 ...
- javascript数据结构与算法--高级排序算法
javascript数据结构与算法--高级排序算法 高级排序算法是处理大型数据集的最高效排序算法,它是处理的数据集可以达到上百万个元素,而不仅仅是几百个或者几千个.现在我们来学习下2种高级排序算法-- ...
- php数据结构与算法
php面试题之二--数据结构和算法(高级部分) 二.数据结构和算法 1.使对象可以像数组一样进行foreach循环,要求属性必须是私有.(Iterator模式的PHP5实现,写一类实现Iterator ...
- php面试题之二——数据结构和算法(高级部分)
二.数据结构和算法 1.使对象可以像数组一样进行foreach循环,要求属性必须是私有.(Iterator模式的PHP5实现,写一类实现Iterator接口)(腾讯) <?php class T ...
- python 下的数据结构与算法---1:让一切从无关开始
这段时间把<Data Structure and Algorithms with python>以及<Problem Solving with Algorithms and Dat ...
随机推荐
- Javascript之封装运动函数
@ 目录 阶段一.仅适用单位带px属性的匀速运动 阶段二.可适用单位不带px属性(如opacity)的匀速运动 阶段三.适用于多元素单一属性的匀速运动 阶段四.适用于多元素单一属性的匀速或缓冲运动 阶 ...
- Hive分析窗口函数
数据准备 CREATE EXTERNAL TABLE lxw1234 ( cookieid string, createtime string, --day pv INT ) ROW FORMAT D ...
- Colab笔记本能用英伟达Tesla T4了,谷歌的羊毛薅到酸爽
谷歌出品的Colab笔记本,机器学习界薅羊毛神器,如今又有了新福利: 连英伟达最新一代机器学习GPU:Tesla T4都能免费蹭,穷苦羊毛党也顿时高端了起来. 英伟达的Tesla T4,是去年秋天才发 ...
- 分布式爬虫scrapy-redis
第一步 下载scrapy模块: pip install scrapy-redis 第二步 创建项目 在终端/cmd进入创建项目的目录: cd 路径: scrapy startproject douba ...
- [vijos1880]选课<树形dp>
题目链接:https://www.vijos.org/p/1180 这是一道树形dp的裸题,唯一的有意思的地方就是用到了多叉树转二叉树 然后本蒟蒻写这一道水题就是因为以前知道这个知识点但是没有怎么去实 ...
- javascript实现组合列表框中元素移动效果
应用背景:在页面中有两个列表框,需要把其中一个列表框的元素移动到另一个列表框 . 实现的基本思想: (1)编写init方法对两个列表框进行初始化: (2)为body添加onload事件调用init方 ...
- Codeforces Global Round 7
A. Bad Ugly Numbers 思路 题意: 给我们一个k,让我们用 0-9 之间的数字构成一个 k位数a,a不能被组成a的每一位数字整除. 分析:首先 k等于1,无论我们怎么配都会被整除:当 ...
- canvas 悬浮效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- RedHat 6.5 上将系统语言修改为中文
RedHat 6.5 上将系统语言修改为中文 1.打开终端,输入su -,键入密码,获取超级用户权限. 2.输入cd /etc/sysconfig,进入设置目录. 3.输入vi i18n,进入到配置文 ...
- ssh秘钥免交互批量分发脚本
将以下内容保存为.sh文件后运行即可,需根据各自情况修改ip_up和ip_arr #!/bin/bash #脚本功能:ssh秘钥免交互批量分发 #制 作 人:罗钢 联系方式:278554547@qqc ...