# adidi12345/daa-assignment1 architecture

> Architecture diagram of the GitHub repository adidi12345/daa-assignment1, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/adidi12345/daa-assignment1
- Repository: https://github.com/adidi12345/daa-assignment1

## Overview

This Java assignment implements four divide-and-conquer algorithms and measures their practical behavior. The principal workflow starts in Main: it runs correctness checks, then launches experiments that generate input cases, invoke the algorithms, collect timing and operation metrics, and write results/results.csv. The plotting script reads that CSV to produce charts. Algorithm internals are represented as distinct runtime components; plotting is included because it is a documented analysis capability.

Main entry points: [`src/Experiment.java`](https://github.com/adidi12345/daa-assignment1/blob/master/src/Experiment.java) (Experiment), [`src/Main.java`](https://github.com/adidi12345/daa-assignment1/blob/master/src/Main.java) (Main), [`src/ClosestPairSolver.java`](https://github.com/adidi12345/daa-assignment1/blob/master/src/ClosestPairSolver.java) (Closest Pair), [`scripts/plot_results.py`](https://github.com/adidi12345/daa-assignment1/blob/master/scripts/plot_results.py) (Plot generator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Application workflow"]
  node_main["Main<br/>[Main.java]"]
  node_experiment["Experiment<br/>[Experiment.java]"]
end

subgraph group_algorithms["Algorithms"]
  node_merge["MergeSort<br/>[MergeSorter.java]"]
  node_quick["QuickSort<br/>[QuickSorter.java]"]
  node_select["Deterministic Select"]
  node_closest["Closest Pair"]
  node_point["Point<br/>[Point.java]"]
end

subgraph group_analysis["Experimental analysis"]
  node_csv[("Experiment results<br/>[results.csv]")]
  node_plotter["Plot generator<br/>[plot_results.py]"]
  node_plots["Generated plots"]
end

node_user(("User"))

node_user -->|"starts"| node_main
node_main -->|"checks correctness"| node_merge
node_main -->|"checks correctness"| node_quick
node_main -->|"checks correctness"| node_select
node_main -->|"checks correctness"| node_closest
node_main -->|"runs experiments"| node_experiment
node_experiment -->|"measures"| node_merge
node_experiment -->|"measures"| node_quick
node_experiment -->|"measures"| node_select
node_experiment -->|"measures"| node_closest
node_experiment -->|"writes records"| node_csv
node_plotter -->|"reads records"| node_csv
node_plotter -->|"writes charts"| node_plots
node_closest -->|"uses coordinates"| node_point
node_experiment -->|"creates point inputs"| node_point

click node_main "https://github.com/adidi12345/daa-assignment1/blob/master/src/Main.java"
click node_experiment "https://github.com/adidi12345/daa-assignment1/blob/master/src/Experiment.java"
click node_merge "https://github.com/adidi12345/daa-assignment1/blob/master/src/MergeSorter.java"
click node_quick "https://github.com/adidi12345/daa-assignment1/blob/master/src/QuickSorter.java"
click node_select "https://github.com/adidi12345/daa-assignment1/blob/master/src/DeterministicSelector.java"
click node_closest "https://github.com/adidi12345/daa-assignment1/blob/master/src/ClosestPairSolver.java"
click node_point "https://github.com/adidi12345/daa-assignment1/blob/master/src/Point.java"
click node_csv "https://github.com/adidi12345/daa-assignment1/blob/master/results/results.csv"
click node_plotter "https://github.com/adidi12345/daa-assignment1/blob/master/scripts/plot_results.py"
click node_plots "https://github.com/adidi12345/daa-assignment1/tree/master/docs/plots"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_experiment,node_user toneBlue
class node_merge,node_quick,node_select,node_closest,node_point toneAmber
class node_csv,node_plotter,node_plots toneMint
```

## Components

### Application workflow

- [Main](https://github.com/adidi12345/daa-assignment1/blob/master/src/Main.java): `src/Main.java`
- [Experiment](https://github.com/adidi12345/daa-assignment1/blob/master/src/Experiment.java): `src/Experiment.java`

### Algorithms

- [MergeSort](https://github.com/adidi12345/daa-assignment1/blob/master/src/MergeSorter.java): `src/MergeSorter.java`
- [QuickSort](https://github.com/adidi12345/daa-assignment1/blob/master/src/QuickSorter.java): `src/QuickSorter.java`
- [Deterministic Select](https://github.com/adidi12345/daa-assignment1/blob/master/src/DeterministicSelector.java): `src/DeterministicSelector.java`
- [Closest Pair](https://github.com/adidi12345/daa-assignment1/blob/master/src/ClosestPairSolver.java): `src/ClosestPairSolver.java`
- [Point](https://github.com/adidi12345/daa-assignment1/blob/master/src/Point.java): `src/Point.java`

### Experimental analysis

- [Experiment results](https://github.com/adidi12345/daa-assignment1/blob/master/results/results.csv): `results/results.csv`
- [Plot generator](https://github.com/adidi12345/daa-assignment1/blob/master/scripts/plot_results.py): `scripts/plot_results.py`
- [Generated plots](https://github.com/adidi12345/daa-assignment1/tree/master/docs/plots): `docs/plots`

### Other components

- **User**

## Connections

- User → Main: starts
- Main → MergeSort: checks correctness
- Main → QuickSort: checks correctness
- Main → Deterministic Select: checks correctness
- Main → Closest Pair: checks correctness
- Main → Experiment: runs experiments
- Experiment → MergeSort: measures
- Experiment → QuickSort: measures
- Experiment → Deterministic Select: measures
- Experiment → Closest Pair: measures
- Experiment → Experiment results: writes records
- Plot generator → Experiment results: reads records
- Plot generator → Generated plots: writes charts
- Closest Pair → Point: uses coordinates
- Experiment → Point: creates point inputs
