Skip to content

nsbcnjsbc/algo-ds

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

基于C和Java实现的数据结构和算法主要分为5类: 

  • 基本数据结构(动态数组、链表、栈及队列等)
  • 字典类结构(二叉查找树、AVL树、红黑树、哈希表、Digital Search Tree、B-树等)
  • 排序算法(快排、堆排序、归并排序)
  • 字符串算法(Trie树、后缀树、后缀数组、AC自动机、KMP等匹配查找算法、正则表达式等)
  • 图算法(DFS、BFS、最小生成树、最短路径)

基于C++实现的算法设计策略主要分为以下几种:

  • 递归与分治策略
  • 动态规划算法
  • 贪心算法
  • 回溯法
  • 分支限界法
  • 概率算法
  • 线性规划与网络流算法
  • 近似算法

参考资料:


Implementation in C

它实现的数据结构,如图下(待扩充):

数据结构

每个文件夹对应实现不同的功能,例如有基础结构、查找、排序、字符串、图论等。

对于每一个数据结构,它含有3个文件。以二叉查找树为例:

  • bst.h :头文件定义其数据结构和API
  • bst.c :实现二叉查找树的各种操作:
  • bst_test.c :测试二叉查找树的操作和时间消耗(测试用例并不全面):

注意:在实现后务必使用Valgrind工具检查程序内存使用是否存在问题,命令如下:

valgrind --leak-check=yes program arg1 arg2 ...

Utils

它提供了必要的计时操作和常见的基础数据结构,以下均是基于泛型的C实现:


Sort

它提供了常见的插入排序(直接插入排序、折半插入排序、希尔排序)、交换排序(冒泡排序、快速排序)、选择排序(简单选择排序、堆排序)、二路归并排序等比较排序,还包括了一些非基于比较的排序算法如计数排序、基数排序、桶排序等。


Search

它主要是以不同的数据结构实现查询操作,例如以树结构为形式的查找树、以链表为形式的跳跃表、以数组或链表为形式的散列表等等。主要实现有:


String


Implementation in Java


Algorithm Design

About

It contains most basic algorithms and data structures with generic techs implementation in c

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 51.0%
  • C 42.8%
  • C++ 5.3%
  • Makefile 0.9%