This repository contains two assignment projects completed as part of the Data Structures (CS 2413) course at Texas Tech University. These assignments focus on implementing fundamental data structure algorithms and analyzing their time complexity. The projects demonstrate the use of linked lists, sorting algorithms (Quicksort, Insertion Sort, and Selection Sort), and the analysis of algorithm performance.
-
Assignment 1: Linked List Time Complexity Analysis
- Topic: Linked Lists and Time Complexity
- Description: This assignment analyzes the time complexity of finding the middle of a linked list. It explores various operations on linked lists and provides insights into the efficiency of linked list traversal and manipulation.
-
Assignment 2: Sorting Algorithm Comparison
- Topic: Sorting Algorithms (Quicksort, Insertion Sort, and Selection Sort)
- Description: This project implements and compares the performance of Quicksort, Insertion Sort, and Selection Sort algorithms. It provides a detailed comparison of the time complexity of these algorithms in the best, worst, and average cases, along with practical analysis of their performance.
This repository primarily utilizes:
- Clone the repository:
git clone https://github.com/your-repo/data-structures.git
- Navigate to the folder for the specific assignment.
- Compile and run the C program using
gcc
:gcc Assignment1.c -o Assignment1 ./Assignment1
Through these assignments, I enhanced my understanding of core data structures and algorithms in C, gaining expertise in the following areas:
-
Linked Lists & Algorithm Efficiency:
- Implemented and analyzed linked list operations like insertion, deletion, and searching, while improving my ability to evaluate algorithm performance through time complexity analysis.
-
Sorting Algorithm Comparison:
- Developed and compared Quicksort, Insertion Sort, and Selection Sort. Gained insights into their time complexities and learned to select the optimal algorithm for different scenarios.
-
C Programming Mastery:
- Strengthened my knowledge of C, focusing on memory management, pointer manipulation, and implementing low-level data structures, providing a solid foundation in system-level programming.
-
Time Complexity Analysis:
- Gained a deep understanding of Big O notation, allowing me to evaluate and optimize algorithms for performance and scalability.
This experience has refined my ability to implement and analyze efficient algorithms in real-world applications.