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