diff --git a/src/Array_Generator.c b/src/Array_Generator.c
new file mode 100644
index 0000000000000000000000000000000000000000..74f804e8b5b277d58f16522b953d58fb89620b77
--- /dev/null
+++ b/src/Array_Generator.c
@@ -0,0 +1,41 @@
+#define INFTY INT_MAX
+
+#include <stdio.h>
+#include <time.h>
+#include <string.h>
+#include <stdlib.h>
+
+int main()
+{
+    int *T;
+    int N;
+    int i, j;
+    FILE *fptr;
+
+    scanf("%d", &N);
+    T = malloc(N * sizeof(int *));
+    srand(0);
+    for (i = 0; i < N; i++)
+    {
+        int value = (rand() % (N)) + 1;
+        T[i] = value;
+    }
+
+    int randomVal = N;
+    char strRandomVal[5];
+    sprintf(strRandomVal, "%d", randomVal);
+    char URL[50] = "../test/";
+    char filename[20] = "qsort_";
+    strcat(filename, strRandomVal);
+    strcat(URL, filename);
+    printf("%s\n", URL);
+    fptr = fopen(URL, "w+");
+    fprintf(fptr, "%d\n", N);
+    for (i = 0; i < N; i++)
+    {
+        fprintf(fptr, "%d ", T[i]);
+    }
+    fclose(fptr);
+    printf("Success generating array!\n");
+    return 0;
+}
\ No newline at end of file
diff --git a/src/QuickSort.c b/src/QuickSort.c
new file mode 100644
index 0000000000000000000000000000000000000000..0074171c7575e069927ab8c6e8a1054c53e83d84
--- /dev/null
+++ b/src/QuickSort.c
@@ -0,0 +1,73 @@
+#include <stdio.h>
+
+// Menuliskan array ke layar
+void PrintArray(int T[], int a, int b)
+{
+    for (int i = a; i <= b - 1; i++)
+    {
+        printf("%d ", T[i - 1]);
+    }
+    printf("%d\n", T[b - 1]);
+}
+
+// Melakukan partisi sembari menukar value dengan pivot ke-i
+void Partisi(int T[], int i, int j, int *k)
+{
+    int pivot = T[i - 1];
+    int p = i;
+    int q = j;
+    while (p <= q)
+    {
+        while (T[p - 1] < pivot)
+        {
+            p++;
+        }
+        while (T[q - 1] > pivot)
+        {
+            q--;
+        }
+        if (p < q)
+        {
+            int temp = T[p - 1];
+            T[p - 1] = T[q - 1];
+            T[q - 1] = temp;
+            p++;
+            q--;
+        }
+        else if (p == q)
+        {
+            p++;
+        }
+    }
+    *k = q;
+}
+
+// Mengurutkan array dengan menggunakan Quick Sort
+void QuickSort(int T[], int i, int j)
+{
+    int k;
+    if (i < j)
+    {
+        Partisi(T, i, j, &k);
+        // PrintArray(T, i, k);
+        // PrintArray(T, k + 1, j);
+        QuickSort(T, i, k);
+        QuickSort(T, k + 1, j);
+    }
+}
+
+int main()
+{
+    int T[5000];
+    int N;
+    scanf("%d", &N);
+    for (int i = 0; i < N; i++)
+    {
+        scanf("%d", &T[i]);
+    }
+
+    PrintArray(T, 1, N);
+    QuickSort(T, 1, N);
+    PrintArray(T, 1, N);
+    return 0;
+}
\ No newline at end of file