C quicksort (#44)
* Add C example for recursion * Add loop_sum in c * Add recursive_sum in c * Add quicksort in c
This commit is contained in:
16
04_quicksort/c/01_loop_sum.c
Normal file
16
04_quicksort/c/01_loop_sum.c
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int sum(int *arr, int size) {
|
||||||
|
int total = 0;
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
total += arr[i];
|
||||||
|
}
|
||||||
|
return total;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
int arr[4] = { 1,2,3,4 };
|
||||||
|
printf("%d", sum(arr, 4));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
14
04_quicksort/c/02_recursive_sum.c
Normal file
14
04_quicksort/c/02_recursive_sum.c
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int sum(int *arr, int index, int size) {
|
||||||
|
if (index == size)
|
||||||
|
return 0;
|
||||||
|
return arr[index] + sum(arr, index + 1, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
int arr[4] = { 1,2,3,4 };
|
||||||
|
printf("%d", sum(arr, 0, 4));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
40
04_quicksort/c/05_quicksort.c
Normal file
40
04_quicksort/c/05_quicksort.c
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
// Quick Sort
|
||||||
|
void quick_sort(int *array, int start, int end) {
|
||||||
|
if (start < end) {
|
||||||
|
int q = partition(array, start, end);
|
||||||
|
quick_sort(array, start, q - 1);
|
||||||
|
quick_sort(array, q + 1, end);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Partition by pivot
|
||||||
|
int partition(int *array, int start, int end) {
|
||||||
|
int pivot = array[end];
|
||||||
|
int i = start - 1;
|
||||||
|
int temp = 0;
|
||||||
|
for (int j = start; j < end; j++) {
|
||||||
|
if (array[j] <= pivot) {
|
||||||
|
i++;
|
||||||
|
temp = array[i];
|
||||||
|
array[i] = array[j];
|
||||||
|
array[j] = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
temp = array[i + 1];
|
||||||
|
array[i + 1] = array[end];
|
||||||
|
array[end] = temp;
|
||||||
|
|
||||||
|
return i + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
int arr[4] = {10, 5, 2, 3};
|
||||||
|
quick_sort(arr, 0, 3);
|
||||||
|
// Print result
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
printf("%d ", arr[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user