1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*************************************************************************
* File Name: quickSort.c
* Author: TyrantLucifer
* E-mail: TyrantLucifer@gmail.com
* Blog: https://tyrantlucifer.com
* Created Time: Sun 10 Apr 2022 02:29:02 PM CST
************************************************************************/
#include <stdio.h>

void printArray(int array[], int length) {
for (int i = 0; i < length; i++) {
printf("%d ", array[i]);
}
printf("\n");
}

int partition(int array[], int i, int j) {
int x = array[i];
while (i < j) {
while (i < j && array[j] >= x) {
j--;
}
if (i < j) {
array[i] = array[j];
i++;
}
while (i < j && array[i] < x) {
i++;
}
if (i < j) {
array[j] = array[i];
j--;
}
}
array[i] = x;
return i;
}

void quickSort(int array[], int i, int j) {
if (i < j) {
int index = partition(array, i, j);
printArray(array, 8);
quickSort(array, i, index - 1);
quickSort(array, index + 1, j);
}
}

int main()
{
int array[8] = {27, 38, 13, 49, 76, 97, 65, 49};
quickSort(array, 0, 7);
return 0;
}