[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解决方案,它包含三个子项目:

  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:

    • Map versions(Supports key-value pairing; nodes indexed by keys)

    • Binary Search Tree

    • (Augmented) Binary Search Tree

    • Ternary Search Tree

  • Self-Balancing Trees:

    • Map version(supports key-value pairing;nodes indexed by keys)

    • AVL Tree

    • B-Tree

    • Red-Black Tree

  • 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

— END —

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/310374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我是如何一步步的在并行编程中将lock锁次数降到最低实现无锁编程

在并行编程中,经常会遇到多线程间操作共享集合的问题,很多时候大家都很难逃避这个问题做到一种无锁编程状态,你也知道一旦给共享集合套上lock之后,并发和伸缩能力往往会造成很大影响,这篇就来谈谈如何尽可能的减少lock…

常用Arthas命令

jad反编译 检查线上代码是否修改成功,例如修改interface后看Jar包是否引入新的,或者代码是否最新的。 jad com.zhenai.counseling.business.provider.facade.supremecourse.RedeemRecordFacadeImpl //反编译只展示源码 jad --source-only com.zhenai.c…

关于分布式锁的面试题都在这里了

「我今天班儿都没上,就为了赶紧把这篇文章分布式锁早点写完。我真的不能再贴心了。」「边喝茶边构思,你们可不要白嫖了!三连来一遍?」引言为什么要学习分布式锁?最简单的理由就是作为一个社招程序员,面试的…

Git 15周年:当年的分道扬镳,成就了今天的开源传奇

4 月 7 日,全球最主流的版本控制系统 —— Git 迎来 15 周年纪念日,项目主要维护者 Junio C Hamano(滨野 纯) 先生发邮件庆祝了这一日子。我们知道,所有的软件项目在整个生命周期中都要经过不断迭代,在一个…

使用 docker 编译运行 abp 项目

在前面的两篇文章中,介绍了如何在华为鲲鹏架构及其Euler系统上运行dotnet core, 使用docker运行了默认的mvc模板项目,这篇文章继续介绍在docker中运行更复杂的dotnet core项目,这里以业内鼎鼎大名的abp vnext框架,版本 2.6 为例。…

数据结构与算法--数组中的逆序对

题目:在数组中的两个数字如果签名一个数字大于后面的数组,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 案例:输入数组{7,5,6,4}中一共有5个逆序对分别是{7,6},{7,5}&#x…

用了这么多年的泛型,你对它到底有多了解?

现代程序员写代码没有人敢说自己没用过泛型,这个泛型模板T可以被任何你想要的类型替代,确实很魔法很神奇,很多人也习以为常了,但就是这么有趣的泛型T底层到底是怎么帮你实现的,不知道有多少人清楚底层玩法,…

数据结构与算法--两个链表中第一个公共节点

链表中第一个公共节点 公节点定义:同一个节点在两个链表中,并不是节点值相同题目:输入两个节点,找出他们的第一个公共节点,节点定义如需 /*** 链表元素节点** author liaojiamin* Date:Created in 12:17 2021/3/5*/ …

ASP.NET Core技术研究-全面认识Web服务器Kestrel

因为IIS不支持跨平台的原因,我们在升级到ASP.NET Core后,会接触到一个新的Web服务器Kestrel。相信大家刚接触这个Kestrel时,会有各种各样的疑问。今天我们全面认识一下ASP.NET Core的默认Web服务器Kestrel。一、初识Kestrel首先,K…

数据结构与算法--二叉堆(最大堆,最小堆)实现及原理

二叉堆(最大堆,最小堆)实现及原理 二叉堆与二叉查找树一样,堆也有两个性质,即结构性质和堆性质。和AVL树一样,对堆的一次操作必须到堆的所有性质都被满足才能终止,也就是我们每次对堆的操作都必…

Blazor WebAssembly 3.2.0 已在塔架就位 将发射新一代前端SPA框架

最美人间四月天,春光不负赶路人。在充满无限希望的明媚春天里,一路风雨兼程的.NET团队正奋力实现新的突破。根据计划,新一代基于WebAssembly 技术研发的前端SPA框架Blazor 将于5月19日在微软Build大会升空。目前,Blazor 的测试工作…

如何将 Azure 上的 Ubuntu 19.10 服务器升级到 20.04

点击上方蓝字关注“汪宇杰博客”导语Ubuntu 20.04 LTS 已经正式推出了。作为一名软粉,看到新版鲍叔毒瘤,我当然是激动万分,抱着批判的态度,第一时间很不情愿的更新了我的服务器。4月23日发布的 Ubuntu 20.04 是个 LTS 版。其 Linu…