Skip to content

各种经典算法+数据结构源码,按不同语言实现,包括Java/C/Python/Go/JS/TS/Dart/Rust/Kotlin等

License

Notifications You must be signed in to change notification settings

microwind/algorithms

Repository files navigation

理解算法与数据结构,学习不同编程语言 English

不同语言实现算法与数据结构,包括 C Java Python JavaScript Go TypeScript Dart Swift Kotlin 等,提供充分注释说明。

  1. 包括数值计算、字符查找、树遍历、排序、动态规划等不同算法。
  2. 每个算法均由多种语言实现,通过实际例子,理解不同语言的特色。
  3. 样例均精心打造,适合学生或程序员学习和分析,提升编程水平。

常见的算法有哪些?

  • 文本查找:包括线性搜索、二分搜索、树形搜索、最大公共子序列、回文计算等。主要是针对字符串进行查找。
  • 数学计算:包括进制转换、开平方、斐波那契数列、质因数分解、数字三角形等。主要是进行数值的运算。
  • 排序算法:包括冒泡、选择、插入、希尔、归并、快速、堆、计数、桶、基数等。用于按顺序排列成员。
  • 其他算法:包括动态规划、贪心算法、分治算法、回溯算法、图算法(如广度优先搜索、深度优先搜索、Dijkstra算法、Kruskal算法等)。此外,还有机器学习和人工智能算法,包括分类算法、聚类算法、深度学习、强化学习等。

常见算法思想

贪心算法(Greedy Algorithm)、分治算法(Divide and Conquer)、动态规划(Dynamic Programming)、回溯算法(Backtracking)、图算法(Graph Algorithms)、分支界限(Branch and Bound)等。详见:10大算法思想

常见算法例子

10大经典排序算法

字符串搜索与查找

树搜索与遍历

质因数分解

数组列表去重复项

递归

数学计算

日期与日历

数据结构

数据结构就是数据组织与存储方式,也就是把数据聚合在一起,以便进行加工整理。把数据从一种结构换成另一种结构就是数据处理,这是编程最常见的工作。详见:数据结构概述

数组(Array)

  • 数组,聚合数据的集合,可以实现线性和非线性

链表(Linked List)

  • 链表,线性结构,数据以链式结构存储

树(Tree)

  • ,非线性结构,模拟树状结构性质的数据集合,一个顶点

堆(Heap)

  • ,非线性结构,特殊的树形数据结构,一般指完全二叉树

栈(Stack)

  • ,线性结构,后进先出

队列(Queue)

  • 队列,线性结构,先进先出

图(Graph)

  • ,非线性结构,节点相互连接,每个节点都可以作为顶点

散列(Hash)

  • 散列,线性结构,根据键访问储存位置的数据结构

结构体(Struct)

相关链接

欢迎加入共建

本文链接 https://github.com/microwind/algorithms

如果您对这个感兴趣,请加我weixin: springbuild 或者邮件: jarryli@gmail.com lichunping@buaa.edu.cn 欢迎一起共建!