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