Skip to content

Commit cdec985

Browse files
kde0820egonSchiele
authored andcommitted
C quicksort (egonSchiele#44)
* Add C example for recursion * Add loop_sum in c * Add recursive_sum in c * Add quicksort in c
1 parent 24b6376 commit cdec985

File tree

3 files changed

+70
-0
lines changed

3 files changed

+70
-0
lines changed

04_quicksort/c/01_loop_sum.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#include <stdio.h>
2+
3+
int sum(int *arr, int size) {
4+
int total = 0;
5+
for (int i = 0; i < size; i++) {
6+
total += arr[i];
7+
}
8+
return total;
9+
}
10+
11+
int main(void) {
12+
int arr[4] = { 1,2,3,4 };
13+
printf("%d", sum(arr, 4));
14+
15+
return 0;
16+
}

04_quicksort/c/02_recursive_sum.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#include <stdio.h>
2+
3+
int sum(int *arr, int index, int size) {
4+
if (index == size)
5+
return 0;
6+
return arr[index] + sum(arr, index + 1, 4);
7+
}
8+
9+
int main(void) {
10+
int arr[4] = { 1,2,3,4 };
11+
printf("%d", sum(arr, 0, 4));
12+
13+
return 0;
14+
}

04_quicksort/c/05_quicksort.c

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#include <stdio.h>
2+
3+
// Quick Sort
4+
void quick_sort(int *array, int start, int end) {
5+
if (start < end) {
6+
int q = partition(array, start, end);
7+
quick_sort(array, start, q - 1);
8+
quick_sort(array, q + 1, end);
9+
}
10+
}
11+
// Partition by pivot
12+
int partition(int *array, int start, int end) {
13+
int pivot = array[end];
14+
int i = start - 1;
15+
int temp = 0;
16+
for (int j = start; j < end; j++) {
17+
if (array[j] <= pivot) {
18+
i++;
19+
temp = array[i];
20+
array[i] = array[j];
21+
array[j] = temp;
22+
}
23+
}
24+
temp = array[i + 1];
25+
array[i + 1] = array[end];
26+
array[end] = temp;
27+
28+
return i + 1;
29+
}
30+
31+
int main(void) {
32+
int arr[4] = {10, 5, 2, 3};
33+
quick_sort(arr, 0, 3);
34+
// Print result
35+
for (int i = 0; i < 4; i++) {
36+
printf("%d ", arr[i]);
37+
}
38+
39+
return 0;
40+
}

0 commit comments

Comments
 (0)