diff --git a/100k_1.txt b/100k_1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ae17c5af22b5630c2de6c906d9989d662dae1f04
--- /dev/null
+++ b/100k_1.txt
@@ -0,0 +1,2 @@
+1
+Program berjalan selama: 36.305078 detik
diff --git a/100k_128.txt b/100k_128.txt
new file mode 100644
index 0000000000000000000000000000000000000000..235772391ab84a9b461dfd48dc9123eb2244a54c
--- /dev/null
+++ b/100k_128.txt
@@ -0,0 +1,2 @@
+128
+Program berjalan selama: 0.040036 detik
diff --git a/100k_16.txt b/100k_16.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7afb2a921712b7c0994c052f37b1eddece85f7c6
--- /dev/null
+++ b/100k_16.txt
@@ -0,0 +1,2 @@
+16
+Program berjalan selama: 0.711111 detik
diff --git a/100k_32.txt b/100k_32.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d8cba89e0403d27e0fa1e63e7c861e1836c213ad
--- /dev/null
+++ b/100k_32.txt
@@ -0,0 +1,2 @@
+32
+Program berjalan selama: 0.317029 detik
diff --git a/100k_64.txt b/100k_64.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1c796b3c277b4bfec4e567fdbafc9a24cc15a9c7
--- /dev/null
+++ b/100k_64.txt
@@ -0,0 +1,2 @@
+64
+Program berjalan selama: 0.145469 detik
diff --git a/100k_8.txt b/100k_8.txt
new file mode 100644
index 0000000000000000000000000000000000000000..304716f58c9879564fabd747b9410cac0fdda7eb
--- /dev/null
+++ b/100k_8.txt
@@ -0,0 +1,2 @@
+8
+Program berjalan selama: 2.554976 detik
diff --git a/200k_1.txt b/200k_1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2d55d4f0e0c203e92a1e6e0173fa38b899731af7
--- /dev/null
+++ b/200k_1.txt
@@ -0,0 +1,2 @@
+1
+Program berjalan selama: 153.797887 detik
diff --git a/200k_128.txt b/200k_128.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7813671fbd77ae897a256052150c2de8cd6d71d6
--- /dev/null
+++ b/200k_128.txt
@@ -0,0 +1,2 @@
+128
+Program berjalan selama: 0.226761 detik
diff --git a/200k_16.txt b/200k_16.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c09dee24647f17582ae864267ee358b54a6907af
--- /dev/null
+++ b/200k_16.txt
@@ -0,0 +1,2 @@
+16
+Program berjalan selama: 3.273830 detik
diff --git a/200k_32.txt b/200k_32.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8df671d6c7f5e021f32b3728d9892229ff85adcc
--- /dev/null
+++ b/200k_32.txt
@@ -0,0 +1,2 @@
+32
+Program berjalan selama: 0.864381 detik
diff --git a/200k_64.txt b/200k_64.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4cc16bfb9fb0c5adc54bcba5418cf02cd51c34f7
--- /dev/null
+++ b/200k_64.txt
@@ -0,0 +1,2 @@
+64
+Program berjalan selama: 0.314616 detik
diff --git a/200k_8.txt b/200k_8.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d7de60cf3d35282cf32158ad374529f067c0b1cd
--- /dev/null
+++ b/200k_8.txt
@@ -0,0 +1,2 @@
+8
+Program berjalan selama: 8.510434 detik
diff --git a/400k_1.txt b/400k_1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7a64e5bbc4f2c6c91b88f1e389898c13af6be6b1
--- /dev/null
+++ b/400k_1.txt
@@ -0,0 +1,2 @@
+1
+Program berjalan selama: 585.409667 detik
diff --git a/400k_128.txt b/400k_128.txt
new file mode 100644
index 0000000000000000000000000000000000000000..72ceee7628474c66d867c5ad54ab5ec542a92ba8
--- /dev/null
+++ b/400k_128.txt
@@ -0,0 +1,2 @@
+128
+Program berjalan selama: 0.421921 detik
diff --git a/400k_16.txt b/400k_16.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9df0a762a9f960567c3edf4a9174bc1f8193482b
--- /dev/null
+++ b/400k_16.txt
@@ -0,0 +1,2 @@
+16
+Program berjalan selama: 11.473965 detik
diff --git a/400k_32.txt b/400k_32.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4f5c8ba52a252fb457c42e09895517e28cec517a
--- /dev/null
+++ b/400k_32.txt
@@ -0,0 +1,2 @@
+32
+Program berjalan selama: 3.016893 detik
diff --git a/400k_64.txt b/400k_64.txt
new file mode 100644
index 0000000000000000000000000000000000000000..002473f4125626771d01040b0955007ca5df9a96
--- /dev/null
+++ b/400k_64.txt
@@ -0,0 +1,2 @@
+64
+Program berjalan selama: 1.123938 detik
diff --git a/400k_8.txt b/400k_8.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cec87e01db4bd7ad0590ed4ac45b833a00967c41
--- /dev/null
+++ b/400k_8.txt
@@ -0,0 +1,2 @@
+8
+Program berjalan selama: 27.223174 detik
diff --git a/50k_1.txt b/50k_1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1d89f1d67da90eb40bb75cbc8b626b4bb1968625
--- /dev/null
+++ b/50k_1.txt
@@ -0,0 +1,2 @@
+1
+Program berjalan selama: 9.709172 detik
diff --git a/50k_128.txt b/50k_128.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ef5333980b68c665dd0a27496dc52e188469c285
--- /dev/null
+++ b/50k_128.txt
@@ -0,0 +1,2 @@
+128
+Program berjalan selama: 0.015114 detik
diff --git a/50k_16.txt b/50k_16.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4a78c39d25bd3520c25e6d07d29f3e694f760848
--- /dev/null
+++ b/50k_16.txt
@@ -0,0 +1,2 @@
+16
+Program berjalan selama: 0.200435 detik
diff --git a/50k_32.txt b/50k_32.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3e91554307a98c1e79971b739963a4bfbf85be41
--- /dev/null
+++ b/50k_32.txt
@@ -0,0 +1,2 @@
+32
+Program berjalan selama: 0.094263 detik
diff --git a/50k_64.txt b/50k_64.txt
new file mode 100644
index 0000000000000000000000000000000000000000..76bfdb55952c9453c4cf076fec6dff611b1a2d1b
--- /dev/null
+++ b/50k_64.txt
@@ -0,0 +1,2 @@
+64
+Program berjalan selama: 0.065497 detik
diff --git a/50k_8.txt b/50k_8.txt
new file mode 100644
index 0000000000000000000000000000000000000000..db51c05b6b7c9947bad65acdf323bc7a69ca9742
--- /dev/null
+++ b/50k_8.txt
@@ -0,0 +1,2 @@
+8
+Program berjalan selama: 0.512097 detik
diff --git a/omp_bucket b/omp_bucket
new file mode 100755
index 0000000000000000000000000000000000000000..bdbb6bb31688df265fd09efa8b44c0baca813131
Binary files /dev/null and b/omp_bucket differ
diff --git a/omp_bucket.c b/omp_bucket.c
new file mode 100644
index 0000000000000000000000000000000000000000..3b26ed30d1d1f163d83e0c7a7da54d82e00fab89
--- /dev/null
+++ b/omp_bucket.c
@@ -0,0 +1,104 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <omp.h>
+
+int *arr_gen(int size) {
+	int *arr = malloc(size * sizeof(int));
+	for (int i = 0; i < size; ++i) {
+		arr[i] = rand() % (size + 1);
+	}
+	return arr;
+}
+int main(int argc, char **argv) {
+	srand(time(NULL));
+	int arr_size;
+	if (argc == 3) {
+		arr_size = atoi(argv[1]);
+	}
+	else {
+		printf("Harus ada argumen jumlah array");
+	}
+
+	int num_threads = atoi(argv[2]);
+	printf("%d\n", num_threads);
+
+	int *array = arr_gen(arr_size);
+
+#ifdef DEBUG
+	printf("Original Array:\n");
+	for (int i = 0; i < arr_size; ++i) {
+		if (i) printf(" ");
+		printf("%d", array[i]);
+	}
+	printf("\n");
+#endif
+
+	int max_val = arr_size;
+	int range = max_val/num_threads+1;
+	int **bucket = malloc(num_threads * sizeof(int*));
+
+	struct timespec start_time, end_time;
+	clock_gettime(CLOCK_MONOTONIC, &start_time);
+	
+	int *q = malloc(num_threads * sizeof(int));
+	int *head = malloc(num_threads * sizeof(int));
+	int i;
+	for (i = 0; i < num_threads; ++i) {
+		q[i] = 0;
+		head[i] = 0;
+	}
+	for (i = 0; i < arr_size; ++i) {
+		int index = array[i] / range;
+		q[index]++;
+	}
+	for (i = 0; i < num_threads; ++i) {
+		bucket[i] = malloc(q[i] * sizeof(int));
+	}
+	for (i = 0; i < arr_size; ++i) {
+		int index = array[i] / range;
+		bucket[index][head[index]] = array[i];
+		head[index]++;
+	}
+
+	int thread_rank = omp_get_thread_num();
+#pragma omp parallel num_threads(num_threads)
+	{
+		int i, j;
+		int n = q[thread_rank];
+		int *local_bucket = bucket[thread_rank];
+		for (i = 0; i < n; ++i) {
+			for (j = i+1; j < n; ++j) {
+				if (local_bucket[i] > local_bucket[j]) {
+					int c = local_bucket[j];
+					local_bucket[j] = local_bucket[i];
+					local_bucket[i] = c;
+				}
+			}
+		}
+	}
+
+	int j;
+	int p = 0;
+	for (i = 0; i < num_threads; ++i) {
+		for (j = 0; j < q[i]; ++j) {
+			array[p++] = bucket[i][j];
+		}
+	}
+
+	clock_gettime(CLOCK_MONOTONIC, &end_time);
+
+#ifdef DEBUG
+	printf("Hasil sorting:\n");
+	for (i = 0; i < arr_size; ++i) {
+		if (i) printf(" ");
+		printf("%d", array[i]);
+	}
+	printf("\n");
+#endif
+
+	double diff = (end_time.tv_sec - start_time.tv_sec) + (double)(end_time.tv_nsec - start_time.tv_nsec) / 1000000000.0;
+	printf("Program berjalan selama: %lf detik\n", diff);
+
+	return 0;
+}
diff --git a/out.txt b/out.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391