[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,一经查实,立即删除!

相关文章

C++实现井字棋小游戏(写得不好,留作纪念!!!)

回宿舍路上,同学问起我能不能用C写个五子棋游戏,我说应该挺简单的,但是我不会写,然后他说不用写五子棋,就写井字棋吧!!!我说试试吧!!! (不过说实话…

数据结构与算法-- 数组中出现次数超过一半的数字(时间复杂度的讨论)

时间效率 互联网想对时间效率格外的敏感,所以我们总是在需求迭代一定程度后去做优化。而且我们解决问题的时候,时间效率往往是一个考查的重点。因此我们平时编码过程中就必须不断的优化效率,追求完美的态度与能力。 首先是编码习惯&#xff…

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

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

常用Arthas命令

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

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

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

数据结构与算法--将数组排成最小的数

将数组排成最小的数 题目:输入一个正整数的数组,将数组中所有数字拼接在一起排列成一个新的数,打印能拼接出来的所有数字中最小的一个, 案例:输入数组{12,4,55},则能打印出最小的数组是&#x…

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

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

数据结构与算法--丑数

找出排在第n位大的丑数 丑数:我们将只包含质因子 2,3,5的数称为丑数(ugly Number)。求按从小到大的熟悉怒排列的低1500 个丑数。例如6,8 都是丑数,但是14 不是丑数,因为他包含质因子7。1 是基础丑数 解法一&#xff1…

数据结构与算法--第一个只出现一次的字符

第一个只出现一次的字符 题目:在字符串中找出第一个只出现一次的字符,比如输入“wersdfxvsdfwer”,则输出x。 方法一: 还是老规矩,初始想法是从头遍历每一个字符,每遍历一个字符都与后面n-1个字符比较如果…

使用 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…