diff --git a/bucketsort.c b/bucketsort.c
new file mode 100644
index 0000000000000000000000000000000000000000..59e18275307755f78840df7353c88970e7611cbe
--- /dev/null
+++ b/bucketsort.c
@@ -0,0 +1,96 @@
+
+#include <omp.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <time.h>
+#include <assert.h>
+
+
+int* bucket(int* localArray, int n, );
+using namespace std;
+int main( int argc, char* argv[] )
+{
+    double start_time, end_time;
+    int i, j, a, b, temp;
+    
+	if (argc != 2) {
+      fprintf(stderr, "usage: %s <number of threads>\n", argv[0]);
+      exit(0);
+	}
+	
+	thread_count = strtol(argv[1], NULL, 10);
+	
+	int size;
+	scanf("%d", &size);
+	int *array = malloc(sizeof( int) * size);
+	for (i=0;i<size;i++)
+		array[i] = rand() % size;
+
+	// starting time calculation of the sort
+
+	// min and max values are got
+	int min = array[0];
+	int max = array[0];
+	for(i=0; i < size; i++) {
+		if(array[i] < min) 
+			min = array[i];
+		if(array[i] > max) 
+			max = array[i];
+	}
+	
+	// calculating how many numbers each bucket/process will get numbers
+	int *elementQtyArray = malloc (sizeof(int)*thread_count);
+	// default values
+	
+	for(int b=1; b < thread_count; b++) {
+		elementQtyArray[b] = 0;
+	}
+	
+	if(thread_count>1){
+		int boundary1;
+		for(int b=0; b < size; b++) {
+			int increaseOf = max/(thread_count-1);
+			int k = 1;
+			boundary1 = 0;
+			for(j = increaseOf; j <= max; j += increaseOf) {
+				if(array[b] <= j) {
+					elementQtyArray[k]++;
+					boundary1 = 1;
+					break;
+				}
+				k++;
+			}
+			if (!boundary1)
+				elementQtyArray[k-1]++;
+		}
+
+		#pragma omp parallel num_threads(thread_count) {
+			
+		}
+	}
+ 
+return 0; 
+}
+
+
+int* bucket(int* localArray, int n ){
+	 // --- sorting the bucket
+	int arraytemp[n];
+	
+	int a, b, temp;
+	for (a = 1 ; a <= n - 1; a++) {
+		b = a;
+		while ( b > 0 && localArray[b] < localArray[b-1]) {
+			temp = localArray[b];
+			localArray[b] = localArray[b-1];
+			localArray[b-1] = temp;
+			b--;
+		}
+	}
+	for (a=0; a<n; a++){
+		arraytemp[a] = localArray[a];
+	}
+	return arraytemp;
+}
+
diff --git a/laporan.txt b/laporan.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b4fe077c6a946e1abc0e23dd2fb4d46354d2be92
--- /dev/null
+++ b/laporan.txt
@@ -0,0 +1,6 @@
+Dikerjakan oleh:
+
+Ahmad Aidin 13513020
+Fikri Aulia 13513050
+
+belum selesai diimplementasikan