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)

This commit is contained in:
Richard Thier 2025-04-07 06:00:09 +02:00
parent 37ed6c4f59
commit 32b5721e37
2 changed files with 54 additions and 0 deletions

17
chatgpt_qs.cpp Normal file
View File

@ -0,0 +1,17 @@
#include <iostream>
#include <vector>
#include <cstdint>
#include "chatgpt_qs.h"
// Example usage
int main() {
std::vector<uint32_t> arr = {3, 6, 8, 10, 1, 2, 1};
std::vector<uint32_t> sorted = gpt_quicksort(arr);
for (uint32_t num : sorted) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}

37
chatgpt_qs.h Normal file
View File

@ -0,0 +1,37 @@
#ifndef CHATGPT_QS_H
#define CHATGPT_QS_H
std::vector<uint32_t> gpt_quicksort(const std::vector<uint32_t> &arr) {
if (arr.size() <= 1) {
return arr;
}
uint32_t pivot = arr[arr.size() / 2];
std::vector<uint32_t> left;
std::vector<uint32_t> middle;
std::vector<uint32_t> 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<uint32_t> sorted_left = gpt_quicksort(left);
std::vector<uint32_t> sorted_right = gpt_quicksort(right);
// Concatenate sorted_left + middle + sorted_right
std::vector<uint32_t> 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