推荐学习C#算法库
在现代编程世界中,算法是解决复杂问题的核心工具。无论你是计算机科学、数据科学、机器学习还是工程领域的学生或教育工作者,掌握各种算法都是至关重要的。今天,我要向大家推荐一个优秀的资源——一个用C#实现各种算法的开源项目。这个项目包含了许多经典算法的实现,如排序算法、图算法、搜索算法等。通过学习和探索这些算法,你将能够提高自己的编程技能,并在解决实际问题时发挥更大的作用。无论你是初学者还是有经验的开发人员,都可以从这个项目中获益良多。希望这个资源能够帮助你在编程之路上取得更大的成就!
项目介绍这个项目是一个用C#实现的各种算法的集合,涵盖了计算机科学、数学和统计学、数据科学、机器学习、工程学等多个领域。项目中的算法实现和相关文档旨在为教育工作者和学生提供学习资源。因此,你可能会发现针对同一目标有多个实现,但使用了不同的算法策略和优化方法。
地址https://github.com/TheAlgorithms/C-Sharp?tab=readme-ov-file
C#
项目特点多样性项目中的算法种类繁多,涵盖了从基础到高级的各种算法。这意味着无论你是初学者还是有经验的开发者,都能在这里找到适合自己的学习材料。
算法列表Algorithms算法
Crypto加密货币
Paddings衬垫
ISO 10125-2 PaddingISO 10125-2 填充
ISO 7816-4 PaddingISO 7816-4 填充
X9.32 PaddingX9.32 填充
TBC Padding待定填充
PKCS7 PaddingPKCS7 填充
Digests摘要
MD2 DigestMD2摘要
Data Compression数据压缩
Burrows-Wheeler transformBurrows-Wheeler 变换
Huffman Compressor霍夫曼压缩机
Shannon-Fano Compressor香农-法诺压缩机
Encoders编码器
Caesar凯撒
Vigenere维杰内尔
Hill爬坡道
NYSIIS
Soundex声音指数
Feistel费斯特尔
Blowfish河豚
Graph图形
Minimum Spanning Tree最小生成树
Prim's Algorithm (Adjacency Matrix)Prim 算法(邻接矩阵)
Kruskal's Algorithm克鲁斯卡尔算法
BreadthFirstTreeTraversal广度优先树遍历
BreadthFirstSearch广度优先搜索
DepthFirstSearch深度优先搜索
Dijkstra Shortest Path迪杰斯特拉最短路径
FloydWarshall弗洛伊德·沃歇尔
Kosaraju科萨拉茹
Knapsack problem背包问题
Naive solver朴素求解器
Dynamic Programming solver动态规划求解器
Branch and bound solver分支定界求解器
IHeuristicKnapsackSolver启发式背包求解器
Linear Algebra线性代数
Distances距离
Euclidean欧几里得
Manhattan曼哈顿
Eigenvalue特征值
Power Iteration功率迭代
Modular Arithmetic模运算
Chinese Remainder Theorem中国剩余定理
Extended Euclidean Algorithm扩展欧几里得算法
Modular Multiplicative Inverse模乘逆
Numeric数字
Aliquot Sum Calculator等分总和计算器
Amicable Numbers Checker友好的数字检查器
Decomposition分解
LU DecompositionLU分解
Thin Singular Vector Decomposition薄奇异向量分解
Greatest Common Divisor最大公约数
Euclidean GCD欧几里得GCD
Binary GCD二元GCD
Factorization因式分解
Trial division Factorization试除因式分解
Modular Exponentiation模幂
Series系列
Maclaurin Series麦克劳林级数
Gauss-Jordan Elimination高斯约尔消元法
BinomialCoefficient二项式系数
Factorial阶乘
Keith Number Checker基思号码检查器
Pseudo-Inverse伪逆
Narcissistic Number Checker自恋数字检查器
Perfect Number Checker完美号码检查器
Perfect Square Checker完美方形检查器
Euler Method欧拉法
Classic Runge-Kutta Method经典龙格-库塔法
Miller-Rabin primality check米勒-拉宾素性检查
KrishnamurthyNumberCheckerKrishnamurthy号码检查器
Automorphic Number自守数
Josephus Problem约瑟夫问题
Newton's Square Root Calculation牛顿平方根计算
Searches搜索次数
A-Star一个明星
Binary Search二分查找
BoyerMoore Search博耶摩尔搜索
Fast Search快速搜索
Fibonacci Search斐波那契搜索
Interpolation Search插值搜索
Jump Search跳转搜索
Linear Search线性搜索
Recursive Binary Search递归二分查找
Sorts排序
Comparison比较
Binary Insertion Sort二元插入排序
Bogo Sort波戈排序
Bubble Sort冒泡排序
Cocktail Sort鸡尾酒排序
Comb Sort梳排序
Cycle Sort循环排序
Exchange Sort交换排序
Heap Sort堆排序
Insertion Sort插入排序
Merge Sort归并排序
Pancake Sort煎饼排序
Quick Sort快速排序
Median of three pivot三枢轴的中位数
Middle point pivot中点枢轴
Random pivot随机枢轴
Selection Sort选择排序
Shell Sort希尔排序
Tim Sort蒂姆·索特
External外部的
Merge Sort归并排序
Integer整数
Counting Sort计数排序
Bucket Sort桶排序
Radix Sort基数排序
String细绳
MSD Radix SortMSD 基数排序
Shufflers洗牌者
Fisher-Yates Shuffler费舍尔-耶茨洗牌器
Sequences序列
A000002 KolakoskiA000002 科拉科斯基
A000004 Zero
A000005 Count of DivisorsA000005 除数计数
A000008 Make ChangeA000008 做出改变
A000010 Euler's TotientA000010 欧拉方程
A000012 All OnesA000012 全一
A000027 NaturalA000027 自然色
A000032 Lucas NumbersA000032 卢卡斯数
A000040 PrimesA000040 素数
A000045 FibonacciA000045 斐波那契
A000079 Powers of 2A000079 2 的幂
A000108 CatalanA000108 加泰罗尼亚语
A000120 1's CountingA000120 1 计数
A000124 Central Polygonal NumbersA000124 中心多边形数
A000125 Cake NumbersA000125 蛋糕号码
A000142 FactorialA000142 阶乘
A000213 Tribonacci NumbersA000213 特里波纳奇数
A000215 Fermat NumbersA000215 费马数
A000288 Tetranacci NumbersA000288 Tetranacci 数字
A000290 SquaresA000290 方块
A000292 Tetrahedral numbersA000292 四面体数
A000578 CubesA000578 立方体
A000720 PrimePiA000720 PrimePi
A001146 Number of Boolean FunctionsA001146 布尔函数数量
A001462 Golomb'sA001462 哥伦布的
A001478 Negative IntegersA001478 负整数
A002110 Primorial NumbersA002110 原始数字
A002717 Matchstick Triangle ArrangementA002717 火柴三角排列
A005132 Recaman'sA005132 雷卡曼的
A006577 Number of '3n+1' steps to reach 1A006577 达到 1 的“3n+1”步数
A006862 Euclid NumbersA006862 欧几里得数
A006879 Number of Primes by Number of DigitsA006879 按位数计算质数个数
A006880 Number of Primes by Powers of 10A006880 10 的幂的素数个数
A007318 BinomialA007318 二项式
A007395 All TwosA007395 全两
A010051 Binary Prime ConstantA010051 二进制素数常数
A010701 All ThreesA010701 三人行
A011557 Powers of 10A011557 10 的幂
A057588 Kummer NumbersA057588 库默号码
A019434 Fermat PrimesA019434 费马素数
A181391 Van Eck'sA181391 范艾克的
String细绳
Similarity相似
Hamming Distance汉明距离
Jaro Similarity哈罗相似度
Jaro-Winkler Distance哈罗-温克勒距离
Pattern Matching模式匹配
Naive String Search朴素字符串搜索
Rabin Karp拉宾·卡普
Boyer Moore博耶·摩尔
Knuth–Morris–Pratt Search高德纳-莫里斯-普拉特搜索
Z-block substring searchZ 块子串搜索
Longest Consecutive Character最长连续字符
Palindrome Checker回文检查器
Get all permutations of a string获取字符串的所有排列
Other其他
Fermat Prime Checker费马素数检查器
Sieve of Eratosthenes埃拉托斯特尼筛法
Luhn卢恩
Int2Binary整型2二进制
GeoLocation地理位置
Mandelbrot曼德尔布罗特
Koch Snowflake科赫雪花
RGB-HSV ConversionRGB-HSV 转换
Flood Fill洪水填充
Pareto Optimization帕累托优化
Gauss Optimization高斯优化
Decisions Convolutions决策卷积
Welford's Variance韦尔福德方差
Julian Easter朱利安复活节
Pollard's Rho波拉德的Rho
Problems问题
Stable Marriage稳定的婚姻
Gale-Shapley盖尔-沙普利
Accepter接受者
Proposer提议者
N-QueensN-皇后区
Backtracking回溯
Dynamic Programming动态规划
Coin Change硬币找零
Levenshtein Distance编辑距离
Data Structures数据结构
Bit Array位数组
Timeline时间线
Segment Trees线段树
Segment Tree线段树
Segment Tree Multiplication线段树乘法
Segment Tree Update线段树更新
Binary Search Tree二叉搜索树
Scapegoat Tree替罪羊树
Fenwick tree (or Binary Indexed Tree)芬威克树(或二元索引树)
AA TreeAA树
AVL TreeAVL树
Red-Black Tree红黑树
Stack堆
Array-based Stack基于数组的堆栈
List-based Stack基于列表的堆栈
Queue-based Stack基于队列的堆栈
Heap堆
Min-Max Heap最小-最大堆
Binary Heap二叉堆
Fibonacci Heap斐波那契堆
Pairing Heap配对堆
Probabilistic概率论
BloomFilter布隆过滤器
Count-Min Sketch计数最小草图
HyperLogLog超级日志日志
Queue队列
Array-based Queue基于数组的队列
List-based Queue基于列表的队列
Stack-based Queue基于堆栈的队列
Linked List链表
Singly Linked List单链表
Doubly Linked List双向链表
Skip List跳过列表
Graph图形
Directed Weighted Graph Via Adjacency Matrix通过邻接矩阵的有向加权图
Disjoint Set不相交集
SortedList排序列表
Inverted index倒排索引
Unrolled linked list展开的链表
Tries尝试
HashTable哈希表
Cache缓存
Least Frequently Used (LFU) Cache最不常用 (LFU) 缓存
Least Recently Used (LRU) Cache最近最少使用 (LRU) 缓存
总结项目的设计初衷是为教育工作者和学生提供一个学习平台。每个算法都有详细的实现和文档,帮助你更好地理解算法的工作原理和应用场景。
总之,这个用C#实现的算法项目是一个非常宝贵的学习资源。无论你是想提升自己的算法知识,还是希望为开源社区做出贡献,这个项目都能为你提供一个良好的平台。赶快加入我们,一起探索算法的世界吧!