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