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:
kde0820
2017-12-02 09:33:23 +09:00
committed by Aditya Bhargava
parent 24b6376d94
commit cdec985db1
3 changed files with 70 additions and 0 deletions

View 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;
}

View 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;
}

View 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;
}