Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sumitst05/dsa-notes

Just a DSA notes repository
https://github.com/sumitst05/dsa-notes

algorithms data-structures

Last synced: 2 months ago
JSON representation

Just a DSA notes repository

Awesome Lists containing this project

README

        

# DSA-notes

This repository contains my notes on Data Structures and Algorithms (DSA) that I am creating as I learn and practice DSA concepts. The purpose of creating these notes is to help myself in revising and reinforcing the concepts and to share them with anyone who might find them useful.

## Table of Contents

- [Data Structures](#Data-Structures)
- [Arrays](#Arrays)
- [Strings](#Strings)
- [Linked Lists](#Linked-Lists)
- [Stacks](#stacks)
- [Queues](#queues)
- [Trees](#trees)
- [Graphs](#graphs)
- [Algorithms](#algorithms)
- [Searching](#searching)
- [Sorting](#sorting)
- [Recursion](#recursion)
- [Dynamic Programming](#dynamic-programming)
- [Greedy Algorithms](#greedy-algorithms)

## Data Structures

### Arrays

- Introduction to arrays
- Operations on arrays (insertion, deletion, searching, etc.)
- 1D and 2D arrays
- Time and space complexity analysis of array operations

### Strings

- Introduction to strings
- Operations on strings (concatenation, comparison, searching, etc.)
- String manipulation algorithms (reversal, palindrome check, anagram check, etc.)
- Pattern matching algorithms (Naive, Rabin-Karp, Knuth-Morris-Pratt, etc.)
- Time and space complexity analysis of string algorithms

### Linked Lists

- Introduction to linked lists
- Singly linked lists
- Doubly linked lists
- Circular linked lists
- Operations on linked lists (insertion, deletion, searching, etc.)
- Time and space complexity analysis of linked list operations

### Stacks

- Introduction to stacks
- Operations on stacks (push, pop, peek, etc.)
- Array and linked list implementation of stacks
- Applications of stacks

### Queues

- Introduction to stacks
- Operations on queues (enqueue, dequeue, peek, etc.)
- Array and linked list implementation of queues
- Applications of stacks

### Trees

- Introduction to trees
- Binary trees
- Binary search trees
- AVL trees
- Heap trees
- Tree traversal (preorder, inorder, postorder, level order)
- Operations on trees (insertion, deletion, searching, etc.)
- Time and space complexity analysis of tree operations

### Graphs

- Introduction to graphs
- Types of graphs (undirected, directed, weighted, unweighted, etc.)
- Graph representation (adjacency matrix, adjacency list)
- Graph traversal (DFS, BFS)

## Algorithms

### Searching

- Linear search
- Binary search
- Time and space complexity analysis of search algorithms

### Sorting

- Bubble sort
- Selection sort
- Insertion sort
- Merge sort
- Quick sort
- Heap sort
- Time and space complexity analysis of sorting algorithms
- Comparison of sorting algorithms

### Recursion

- Introduction to recursion
- Recursive algorithms (factorial, Fibonacci, etc.)
- Time and space complexity analysis of recursive algorithms

### Dynamic Programming

- Introduction to dynamic programming
- Memoization and tabulation
- Top-down and bottom-up approaches
- Examples of dynamic programming problems (knapsack problem, longest common subsequence, etc.)
- Time and space complexity analysis of dynamic programming algorithms

### Greedy Algorithms

- Introduction to greedy algorithms
- Greedy algorithm design techniques (activity selection, Huffman coding, etc.)
- Examples of greedy algorithms (Dijkstra's algorithm, Prim's and Kruskal's algorithm, etc.)
- Time and space complexity analysis of greedy algorithms

Feel free to use these notes