From d2f5c7106dbd30ef4719a4bb779b306259368993 Mon Sep 17 00:00:00 2001 From: vaisse Date: Wed, 10 Sep 2025 17:15:58 +0200 Subject: [PATCH] quicksort --- gmon.out | Bin 3820 -> 4036 bytes quicksort.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++ quicksort.h | 7 ++++++ student_rank | Bin 21944 -> 22816 bytes student_rank.c | 3 ++- 5 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 quicksort.c create mode 100644 quicksort.h diff --git a/gmon.out b/gmon.out index 98de536fc5fd5ef8c652749084affd62b9b79d06..e4ccea32c3792fc313ed4eedba2d17a360322cf2 100755 GIT binary patch delta 212 zcmaDOdqjSMESHHa0~iFbZ&c6V*ckALQIvy$fq@Y$$i-j+WwA~+;8oukP{Pa#l3|>@ zibr~4fXL+e9BPyMIRqvK1UWJ`2!Zu5e369EFPIq^7#&0*oK-Rq8Z5W~D(D~r5p;0k lXJEWA*^Mv5?gCU@fiy&l;|CuD;|Hi9%n-031JvQjf&haGADRFF literal 3820 zcmYe#&Cg?GzyVsMArep67#LC*7#NCElk@XZiXnmw3~&ZaV3ZyWfzc2c4S~@R7!85Z z5Eu;s(nA2fDZ)g$5hGRyGXnzyBLj%!VBj9`Pyo3D5__z0w}8at8Q2+E7#J8>8B7@Z z83Y-47?>H17`PeO!7hg@CBR^0fTR=%39<*lGGu_sA`Ai94BD;o(= hi || lo < 0 then + return + + // Partition array and get the pivot index + p := partition(A, lo, hi) + + // Sort the two partitions + quicksort(A, lo, p - 1) // Left side of pivot + quicksort(A, p + 1, hi) // Right side of pivot + +// Divides array into two partitions +algorithm partition(A, lo, hi) is + pivot := A[hi] // Choose the last element as the pivot + + // Temporary pivot index + i := lo + + for j := lo to hi - 1 do + // If the current element is less than or equal to the pivot + if A[j] <= pivot then + // Swap the current element with the element at the temporary pivot index + swap A[i] with A[j] + // Move the temporary pivot index forward + i := i + 1 + + // Swap the pivot with the last element + swap A[i] with A[hi] + return i // the pivot index*/ + +int Partition(int * array, int lo, int hi){ + /*variables*/ + int pivot = array[hi]; + int tmp_ind = lo; + int tmp; + int i = 0; + + /*pivots*/ + for(i=lo; i=hi)||(lo<0)){ + return; + } + + p = Partition(array, lo, hi); + + quicksort(array, lo, p-1); + quicksort(array, p+1, hi); +} \ No newline at end of file diff --git a/quicksort.h b/quicksort.h new file mode 100644 index 0000000..72d914f --- /dev/null +++ b/quicksort.h @@ -0,0 +1,7 @@ +#ifndef __QUICKSORT__ +#define __QUICKSORT__ + +int Partition(int * array, int lo, int hi); +void quicksort(int * array, int lo, int hi); + +#endif \ No newline at end of file diff --git a/student_rank b/student_rank index 177bf6002c0407df48130364b7f1d0df3698578e..651a0e3ec4db7811393002d082e8c48b8dff2d46 100755 GIT binary patch delta 5292 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 diff --git a/student_rank.c b/student_rank.c index dca9ed6..2c13be4 100644 --- a/student_rank.c +++ b/student_rank.c @@ -5,6 +5,7 @@ #include #include "heapsort.h" #include "bubblesort.h" +#include "quicksort.h" void generate_grades(int** students_array, int students_number, int grades_number) { @@ -77,7 +78,7 @@ void sort_students(int** students_rank, int** students_array, int students_numbe { grades[j] = students_array[j][i]; } - heapsort(grades,students_number); + quicksort(grades,0,students_number); for(j = 0; j < students_number; j++) { students_rank[j][i] = find_rank_student(students_array[j][i],grades,students_number);