From 9228ebbe5b1599c4eba8e7b5628cc31ef0401068 Mon Sep 17 00:00:00 2001 From: Maximilian Baum Date: Thu, 2 Apr 2026 09:55:20 +0200 Subject: [PATCH] added stalin sort --- src/routes/api/sort.js | 2 +- src/routes/api/stalinSort.js | 29 ++++++++++++++++++++++++ src/routes/docs/openapi.json | 44 +++++++++++++++++++++++++++++++++++- src/server.js | 2 ++ 4 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 src/routes/api/stalinSort.js diff --git a/src/routes/api/sort.js b/src/routes/api/sort.js index de14355..621b105 100644 --- a/src/routes/api/sort.js +++ b/src/routes/api/sort.js @@ -15,7 +15,7 @@ router.post('/', (req, res) => { return String(a).localeCompare(String(b)); }); - res.json({ sortedArray }); + res.json({ ret: sortedArray }); }); module.exports = router; diff --git a/src/routes/api/stalinSort.js b/src/routes/api/stalinSort.js new file mode 100644 index 0000000..e807fc2 --- /dev/null +++ b/src/routes/api/stalinSort.js @@ -0,0 +1,29 @@ +const express = require('express'); +const router = express.Router(); + +router.post('/', (req, res) => { + const { input } = req.body; + + if (!Array.isArray(input)) { + return res.status(400).json({ error: 'Request body muss ein Feld "array" mit einem Array enthalten' }); + } + + const sortedArray = Array(); + sortedArray.push(input[0]); + let executions = 0; + + for (let i = 1; i < input.length; i++) { + if (input[i] > input[i - 1]) { + sortedArray.push(input[i]); + } else { + executions++; + } + } + + res.json({ + ret: sortedArray, + executions + }); +}); + +module.exports = router; diff --git a/src/routes/docs/openapi.json b/src/routes/docs/openapi.json index 40ed265..a2389d0 100644 --- a/src/routes/docs/openapi.json +++ b/src/routes/docs/openapi.json @@ -39,7 +39,7 @@ "schema": { "type": "object", "properties": { - "sortedArray": { + "ret": { "type": "array", "items": {} } @@ -51,6 +51,48 @@ } } }, + "/stalinSort": { + "post": { + "summary": "Sorts an array using Stalin Sort", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "input": { + "type": "array", + "items": {} + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Sorted array and execution count", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ret": { + "type": "array", + "items": {} + }, + "executions": { + "type": "number" + } + } + } + } + } + } + } + } + }, "/isEven": { "post": { "summary": "Checks if number is even", diff --git a/src/server.js b/src/server.js index 2c21469..0dae620 100644 --- a/src/server.js +++ b/src/server.js @@ -2,6 +2,7 @@ const express = require('express'); const bodyParser = require('body-parser'); const path = require('path'); const sortRoute = require('./routes/api/sort'); +const stalinSortRoute = require('./routes/api/stalinSort'); const isEvenRoute = require('./routes/api/isEven'); const isOddRoute = require('./routes/api/isOdd'); const toStringRoute = require('./routes/api/toString'); @@ -17,6 +18,7 @@ app.use(express.static(path.join(__dirname, '../www'))); app.use(bodyParser.json()); app.use('/api/sort', sortRoute); +app.use('/api/stalinSort', stalinSortRoute); app.use('/api/isEven', isEvenRoute); app.use('/api/isOdd', isOddRoute); app.use('/api/toString', toStringRoute);