diff --git a/Laporan IF3230 - OpenMP.docx b/Laporan IF3230 - OpenMP.docx new file mode 100644 index 0000000000000000000000000000000000000000..f5dcad5c1aa0fb20f84d6016cdc2e7e33dd903de Binary files /dev/null and b/Laporan IF3230 - OpenMP.docx differ diff --git a/omp_bucket_sort b/omp_bucket_sort new file mode 100755 index 0000000000000000000000000000000000000000..3f42cb2cc943d486486df188f82c1575e6f3fe50 Binary files /dev/null and b/omp_bucket_sort differ diff --git a/omp_bucket_sort.c b/omp_bucket_sort.c index 2b55b6880f5211214f3f3e711f0c55879789a940..fdc9c68979e74e5c326c30a50736f4f719412498 100644 --- a/omp_bucket_sort.c +++ b/omp_bucket_sort.c @@ -93,20 +93,28 @@ int main(int argc, char** argv) { int counter; time_t start_t; - start_t = clock(); int *sorted_array = NULL; - int *arr =(int *)malloc(sizeof(int) * num_element); -#pragma omp parallel for num_threads(thread_count) shared(rand_nums) + int *arr =(int *)malloc(sizeof(int) * num_element); + int *arr_final = (int *)malloc(sizeof(int) * num_element); + int arr_counter = 0; + start_t = clock(); + #pragma omp parallel for num_threads(thread_count) shared(rand_nums, arr_counter, arr_final) for (counter = 1;counter<thread_count;counter++) { int size_arr ; make_bucket(rand_nums,arr,&size_arr,num_element,counter,thread_count); sorted_array = sort_array(arr,size_arr); - print_array(sorted_array, size_arr); + int j = 0; + for(int i = arr_counter; i < arr_counter+size_arr; i++) { + arr_final[i] = sorted_array[j]; + j++; + } + arr_counter += size_arr; } - time_t finish_t = clock(); + print_array(arr_final, num_element); + printf("Waktu eksekusi %d data : %d process : %.5f ms\n", num_element, thread_count, (double)(finish_t-start_t)*1000/CLOCKS_PER_SEC); free(rand_nums);