# pragna1004/dsa-cpp architecture

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

- Interactive diagram: https://gitdiagram.com/pragna1004/dsa-cpp
- Repository: https://github.com/pragna1004/dsa-cpp

## Overview

This repository is a collection of standalone C++ array and number-algorithm examples, not a shared application or library. Its programs cover sorting (including timing variants), array queries and transformations, set-style operations and frequency checks, and two GCD approaches. Sampled programs contain their own `main`; there is no demonstrated central dispatcher or shared data pipeline. The README is empty, and only a subset of source files was sampled, so links are limited to confirmed console interaction.

Main entry points: [`Arrays/insertionsorttime.cpp`](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/insertionsorttime.cpp) (Insertion sort timing), [`Arrays/insertiontime.cpp`](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/insertiontime.cpp) (Bubble sort timing), [`Arrays/selectionsorttime.cpp`](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/selectionsorttime.cpp) (Selection sort timing), [`Arrays/gcd_euclidian.cpp`](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/gcd_euclidian.cpp) (Euclidean GCD)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_sorting["Sorting"]
  node_bubble["Bubble sort<br/>[bubblesort.cpp]"]
  node_insertion["Insertion sort<br/>[insertionsort.cpp]"]
  node_insertiontimed["Insertion sort timing"]
  node_bubbletimed["Bubble sort timing<br/>[insertiontime.cpp]"]
  node_selection["Selection sort<br/>[selectionsort.cpp]"]
  node_selectiontimed["Selection sort timing"]
end

subgraph group_arrays["Array operations"]
  node_arrayunion["Sorted union<br/>[union.cpp]"]
  node_intersection["Sorted intersection<br/>[intersection.cpp]"]
  node_leftrotate["Left rotation<br/>[leftrotate.cpp]"]
  node_leftrotatek["K-step rotation<br/>[leftrotatek.cpp]"]
  node_rotationreversal["Reversal rotation"]
  node_movezeroes["Move zeroes<br/>[movezeroes.cpp]"]
  node_duplicates["Remove duplicates"]
end

subgraph group_analysis["Array queries"]
  node_largest["Largest value<br/>[largest.cpp]"]
  node_secondlargest["Second largest<br/>[secondlargest.cpp]"]
  node_sortedcheck["Sorted check<br/>[sorted.cpp]"]
  node_target["Target search<br/>[target.cpp]"]
  node_targetk["K-target search<br/>[targetk.cpp]"]
  node_majority["Majority element<br/>[majority.cpp]"]
  node_occurrences["Occurrence threshold<br/>[occurances.cpp]"]
  node_maxsubarray["Maximum subarray sum<br/>[maxsubarraysum.cpp]"]
  node_missingnumber["Missing number<br/>[missingnumber.cpp]"]
  node_product["Array product<br/>[product.cpp]"]
  node_once["Single occurrence<br/>[once.cpp]"]
end

subgraph group_numbers["Number algorithms"]
  node_gcdmodulo["Euclidean GCD<br/>[gcd_euclidian.cpp]"]
  node_gcdfactor["Factor-scan GCD<br/>[gcd_factorial.cpp]"]
end

node_console(("Console user"))

node_console -->|"enters size"| node_selectiontimed
node_selectiontimed -->|"prints timing"| node_console
node_console -->|"enters size"| node_bubbletimed
node_bubbletimed -->|"prints timing"| node_console
node_console -->|"enters size"| node_insertiontimed
node_insertiontimed -->|"prints timing"| node_console
node_console -->|"enters numbers"| node_gcdmodulo
node_gcdmodulo -->|"prints result"| node_console
node_console -->|"enters numbers"| node_gcdfactor
node_gcdfactor -->|"prints result"| node_console

click node_bubble "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/bubblesort.cpp"
click node_insertion "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/insertionsort.cpp"
click node_insertiontimed "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/insertionsorttime.cpp"
click node_bubbletimed "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/insertiontime.cpp"
click node_selection "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/selectionsort.cpp"
click node_selectiontimed "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/selectionsorttime.cpp"
click node_arrayunion "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/union.cpp"
click node_intersection "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/intersection.cpp"
click node_leftrotate "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/leftrotate.cpp"
click node_leftrotatek "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/leftrotatek.cpp"
click node_rotationreversal "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/leftrotatek_reversal.cpp"
click node_movezeroes "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/movezeroes.cpp"
click node_duplicates "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/duplicates_removal.cpp"
click node_largest "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/largest.cpp"
click node_secondlargest "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/secondlargest.cpp"
click node_sortedcheck "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/sorted.cpp"
click node_target "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/target.cpp"
click node_targetk "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/targetk.cpp"
click node_majority "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/majority.cpp"
click node_occurrences "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/occurances.cpp"
click node_maxsubarray "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/maxsubarraysum.cpp"
click node_missingnumber "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/missingnumber.cpp"
click node_product "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/product.cpp"
click node_once "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/once.cpp"
click node_gcdmodulo "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/gcd_euclidian.cpp"
click node_gcdfactor "https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/gcd_factorial.cpp"

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_bubble,node_insertion,node_insertiontimed,node_bubbletimed,node_selection,node_selectiontimed,node_console toneBlue
class node_arrayunion,node_intersection,node_leftrotate,node_leftrotatek,node_rotationreversal,node_movezeroes,node_duplicates toneAmber
class node_largest,node_secondlargest,node_sortedcheck,node_target,node_targetk,node_majority,node_occurrences,node_maxsubarray,node_missingnumber,node_product,node_once toneMint
class node_gcdmodulo,node_gcdfactor toneRose
```

## Components

### Sorting

- [Bubble sort](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/bubblesort.cpp): `Arrays/bubblesort.cpp`
- [Insertion sort](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/insertionsort.cpp): `Arrays/insertionsort.cpp`
- [Insertion sort timing](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/insertionsorttime.cpp): `Arrays/insertionsorttime.cpp`
- [Bubble sort timing](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/insertiontime.cpp): `Arrays/insertiontime.cpp`
- [Selection sort](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/selectionsort.cpp): `Arrays/selectionsort.cpp`
- [Selection sort timing](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/selectionsorttime.cpp): `Arrays/selectionsorttime.cpp`

### Array operations

- [Sorted union](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/union.cpp): `Arrays/union.cpp`
- [Sorted intersection](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/intersection.cpp): `Arrays/intersection.cpp`
- [Left rotation](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/leftrotate.cpp): `Arrays/leftrotate.cpp`
- [K-step rotation](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/leftrotatek.cpp): `Arrays/leftrotatek.cpp`
- [Reversal rotation](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/leftrotatek_reversal.cpp): `Arrays/leftrotatek_reversal.cpp`
- [Move zeroes](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/movezeroes.cpp): `Arrays/movezeroes.cpp`
- [Remove duplicates](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/duplicates_removal.cpp): `Arrays/duplicates_removal.cpp`

### Array queries

- [Largest value](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/largest.cpp): `Arrays/largest.cpp`
- [Second largest](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/secondlargest.cpp): `Arrays/secondlargest.cpp`
- [Sorted check](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/sorted.cpp): `Arrays/sorted.cpp`
- [Target search](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/target.cpp): `Arrays/target.cpp`
- [K-target search](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/targetk.cpp): `Arrays/targetk.cpp`
- [Majority element](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/majority.cpp): `Arrays/majority.cpp`
- [Occurrence threshold](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/occurances.cpp): `Arrays/occurances.cpp`
- [Maximum subarray sum](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/maxsubarraysum.cpp): `Arrays/maxsubarraysum.cpp`
- [Missing number](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/missingnumber.cpp): `Arrays/missingnumber.cpp`
- [Array product](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/product.cpp): `Arrays/product.cpp`
- [Single occurrence](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/once.cpp): `Arrays/once.cpp`

### Number algorithms

- [Euclidean GCD](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/gcd_euclidian.cpp): `Arrays/gcd_euclidian.cpp`
- [Factor-scan GCD](https://github.com/pragna1004/dsa-cpp/blob/master/Arrays/gcd_factorial.cpp): `Arrays/gcd_factorial.cpp`

### Other components

- **Console user**

## Connections

- Console user → Selection sort timing: enters size
- Selection sort timing → Console user: prints timing
- Console user → Bubble sort timing: enters size
- Bubble sort timing → Console user: prints timing
- Console user → Insertion sort timing: enters size
- Insertion sort timing → Console user: prints timing
- Console user → Euclidean GCD: enters numbers
- Euclidean GCD → Console user: prints result
- Console user → Factor-scan GCD: enters numbers
- Factor-scan GCD → Console user: prints result
