// the find
hkl7-dev/Warehouse-Data-Processing-System
A command-line data processing pipeline built in C for the Algorithms & Design module (CMPU1001). The system ingests raw warehouse inbound records from four logistics teams, sorts and merges them into a single time-ordered dispatch list, and provides search and reporting tools — all meeting strict Big-O complexity requirements.
A single-file C program from a TU Dublin algorithms module that sorts four logistics teams' warehouse inbound records by timestamp, merges them into one dispatch list with a size-4 min-heap, and offers binary-search lookup and a per-container report. It reads as coursework, and it is most useful as a worked example of k-way merge in C.
The k-way merge is the right tool here. A heap of size four holds one front record per sorted file, so the combined list is built in one pass without re-sorting. Timestamps are reduced to seconds, so every comparison is a single integer compare. The report pass is a single sweep that keeps a courier bitmask per container, which avoids a nested loop for a small, fixed set of couriers. The README states the complexity for each task and ships the test CSV, so the program runs without setup.
The O(log N) claim covers only locating the first candidate. The forward scan for a matching product code is linear in the number of later records, so a query for a common product code can approach O(N), and the complexity table does not say so. The README describes a courier bitmask but not the valid ID range, and a bitmask only holds IDs that fit its width, so out-of-range IDs would be a silent failure unless the code checks for them. The test data is synthetic output from Excel RAND() with timestamps between 08:00 and 17:00, so it probably does not exercise timestamp ties, empty files, or single-record containers, which are the usual places merge and report code breaks. The README also uses 'team', 'container', and 'file' interchangeably ('four container files', 'each team's file', one Testdata CSV), so it is unclear whether the input is split by team or by container.