# Algorithm
**Algorithms** are step-by-step procedures or formulas for solving problems. They form the backbone of computer science, enabling efficient data processing, problem-solving, and decision-making across various applications. Mastering algorithms is essential for optimizing code and understanding the underlying mechanics of software development.
<br/>
- ## Sorting Algorithms
- Bubble Sort
- Merge Sort
- Quick Sort
- ## Search Algorithms
<!-- Search algorithms are fundamental for finding elements in data structures and solving optimization problems. They explore possible solutions or paths in an efficient manner. -->
- Binary Search<!-- () -->
- [Depth-First Search (DFS)](/9I3edilFSFiyV5Ww8PSe8A)
- [Breadth-first search (BFS)](/_a00R8RaTKulKV-s7p34-A)
- ## Graph Algorithms
<!-- Graph algorithms are essential for solving problems related to networks and relationships. They help in exploring the structure of graphs, finding the shortest paths, detecting cycles, and identifying connected components. -->
- [Dijkstra's Algorithm](/O6VCgFPvQLKRHBIhsgE5Gw)
- [Tarjan's Algorithm (SCC)](/oH5jOy3BSvmq37PGE1KcBg)
- Bellman-Ford Algorithm
- Floyd-Warshall Algorithm
- ## Backtracking
- N-Queens Problem
- Sudoku Solver
- Knapsack Problem
- ## Greedy Algorithms
- Activity Selection Problem
- Huffman Coding
- Kruskal’s Algorithm
- ## Divide and Conquer
- Merge Sort
- Quick Sort
- Binary Search
- ## Dynamic Programming
- Knapsack Problem
- Longest Common Subsequence
- Fibonacci Sequence
- ## Miscellaneous
- Hashing
- Bit Manipulation
- Randomized Algorithms
{"description":"Algorithm self-learning note.","title":"Algorithm","contributors":"[{\"id\":\"08ecf684-cada-47c1-ad99-984ab62fb65e\",\"add\":2395,\"del\":698}]","image":"https://hackmd.io/_uploads/HkpX-ZdaC.png"}