Welcome to the repository for Week 3 of our Java learning path. This week was focused on exploring essential *data structures, **search/sort algorithms, and *runtime analysisโall of which are critical to writing efficient Java programs.
Day | Topic | Status | Submission Title | Notes |
---|---|---|---|---|
01 | Data Structures Introduction & LinkedList | โ Completed | 01 - Submission of Data Structure - LinkedList | No due date |
02 | Stack, Queue, HashMap, and Hashing Function | โ Completed | 02 - Submission of Stack, Queue, HashMap and Hashing Function | No due date |
03 | Sorting Algorithms | โ Completed | 03 - Submission of Sorting Algorithms | No due date |
04-05 | Linear Search, Binary Search, StringBuilder, StringBuffer, BufferedReader, FileReader, InputStreamReader | โ Completed | 04 and 05 - Submission of Linear and Binary Search | No due date |
06 | Algorithm Runtime Analysis & Big-O Notation | โ Completed | 06 - Submission of Algorithm's Runtime Analysis | No due date |
Week 3 was designed to build proficiency in managing and manipulating data using foundational data structures such as LinkedLists, Stacks, Queues, and HashMaps. We also explored searching and sorting techniques and learned how to evaluate algorithm efficiency using Big-O notation. This week's lessons were essential for building performance-aware Java applications.
- What are Data Structures?
- Introduction to LinkedLists
- Singly vs. Doubly LinkedLists
- Traversing, inserting, and deleting nodes
- Understanding LIFO (Stack) and FIFO (Queue)
- Stack operations using Java's Stack class
- Queue operations using LinkedList or Queue interface
- Introduction to HashMap and hashing functions
- Basic operations: put(), get(), remove()
- Bubble Sort, Selection Sort, Insertion Sort
- Time and space complexity
- When and why to use each sorting technique
- Linear Search vs. Binary Search
- Binary Search prerequisites (sorted data)
- StringBuilder vs. StringBuffer
- Java I/O: BufferedReader, FileReader, InputStreamReader
- Efficient string and file manipulation
- Introduction to Big-O notation
- Analyzing time and space complexity
- Best, worst, and average case scenarios
- Comparing algorithm efficiency
This repository contains folders and files categorized by each day's topic. Each folder may include:
- Lecture notes or summaries
- Code implementations of data structures and algorithms
- Lab solutions and assignments
Feel free to explore, run, and modify the code for deeper understanding and practice.
Happy Coding! ๐งฎ๐๐