From 32b5721e379263054ab6dd06afebaeaf40034094 Mon Sep 17 00:00:00 2001 From: Richard Thier Date: Mon, 7 Apr 2025 06:00:09 +0200 Subject: [PATCH] added chatgpt 4o version when asked to write quicksort - crashed around 100k elements in ascasc or similar patterns in my experience - also builds with a huge warning in case of g++ (no warning with clang++ though) --- chatgpt_qs.cpp | 17 +++++++++++++++++ chatgpt_qs.h | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 chatgpt_qs.cpp create mode 100644 chatgpt_qs.h diff --git a/chatgpt_qs.cpp b/chatgpt_qs.cpp new file mode 100644 index 0000000..d9bd377 --- /dev/null +++ b/chatgpt_qs.cpp @@ -0,0 +1,17 @@ +#include +#include +#include +#include "chatgpt_qs.h" + +// Example usage +int main() { + std::vector arr = {3, 6, 8, 10, 1, 2, 1}; + std::vector sorted = gpt_quicksort(arr); + + for (uint32_t num : sorted) { + std::cout << num << " "; + } + std::cout << std::endl; + + return 0; +} diff --git a/chatgpt_qs.h b/chatgpt_qs.h new file mode 100644 index 0000000..d6b2106 --- /dev/null +++ b/chatgpt_qs.h @@ -0,0 +1,37 @@ +#ifndef CHATGPT_QS_H +#define CHATGPT_QS_H + +std::vector gpt_quicksort(const std::vector &arr) { + if (arr.size() <= 1) { + return arr; + } + + uint32_t pivot = arr[arr.size() / 2]; + std::vector left; + std::vector middle; + std::vector right; + + for (uint32_t x : arr) { + if (x < pivot) { + left.push_back(x); + } else if (x == pivot) { + middle.push_back(x); + } else { + right.push_back(x); + } + } + + std::vector sorted_left = gpt_quicksort(left); + std::vector sorted_right = gpt_quicksort(right); + + // Concatenate sorted_left + middle + sorted_right + std::vector result; + result.reserve(sorted_left.size() + middle.size() + sorted_right.size()); + result.insert(result.end(), sorted_left.begin(), sorted_left.end()); + result.insert(result.end(), middle.begin(), middle.end()); + result.insert(result.end(), sorted_right.begin(), sorted_right.end()); + + return result; +} + +#endif // CHATGPT_QS_H