gitmyhub

Learn-Algorithms

C ★ 9.0k updated 1y ago

算法学习笔记

A personal collection of study notes on classic algorithms and data structures implemented in C, covering sorting, graphs, trees, and interview problems, with explanations written in Chinese.

Csetup: easycomplexity 2/5

Learn-Algorithms is a personal collection of study notes on algorithms and data structures, written in Chinese. The author worked through a broad range of classic computer science topics and recorded their understanding as they went. The notes are implemented in C and organized into sections by topic, covering both theory and working code.

The repository covers foundational data structures including linked lists, arrays, queues, hash tables, and various types of trees: binary search trees, AVL trees, red-black trees, B-trees, B+ trees, Trie trees, and heaps. Graph algorithms are also covered, including minimum spanning trees, topological sorting, shortest path methods such as Dijkstra, Floyd, and Bellman-Ford, and breadth-first and depth-first traversal.

Sorting algorithms covered include bubble sort, insertion sort, selection sort, shell sort, quick sort, merge sort, heap sort, and bucket sort. The search section covers hash tables, binary search, sequential search, and dynamic search structures. A section on algorithm design techniques explains recursion, divide and conquer, dynamic programming, backtracking, greedy algorithms, and exhaustive search.

There is also a collection of common interview problems organized by category: strings, stacks and queues, linked lists, numeric problems, arrays, matrix problems, binary trees, graphs, and system design. A separate section covers algorithms that appear in large-scale data processing, such as Bloom filters, inverted indexes, simhash, and MapReduce. Another section traces algorithms found in well-known open source projects like Bitcoin, Kafka, and Nginx.

The README is written entirely in Chinese and includes a recommended reading list of classic algorithm textbooks and links to online coding practice platforms such as LeetCode.

Where it fits