From 10f9fd02f78e6818b0b157d14b348fd36682fedb Mon Sep 17 00:00:00 2001 From: leo Date: Fri, 16 Feb 2024 00:44:13 -0300 Subject: finalizado, tem que melhorar a performance --- myqsort.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 myqsort.c (limited to 'myqsort.c') diff --git a/myqsort.c b/myqsort.c new file mode 100644 index 0000000..ac18a68 --- /dev/null +++ b/myqsort.c @@ -0,0 +1,34 @@ +#include "myqsort.h" +#include +int my_partition(display *A, int p, int r){ + int ri = p + rand() % (r - p); + display tmp = A[ri]; + A[ri] = A[r]; + A[r] = tmp; + + display pivot = A[r]; + int pos_pivot = p; + + for(int i=p; i < r; ++i){ + if(A[i].p.z < pivot.p.z){ + display aux = A[i]; + A[i] = A[pos_pivot]; + A[pos_pivot] = aux; + pos_pivot++; + } + } + + display aux = A[pos_pivot]; + A[pos_pivot] = pivot; + A[r] = aux; + + return pos_pivot; +} + +void my_qsort(display *A, int p, int r){ + if(p < r){ + int q = my_partition(A, p, r); + my_qsort(A, p, q-1); + my_qsort(A, q+1, r); + } +} -- cgit v1.2.3