Skip to content
Snippets Groups Projects
Commit 361576cd authored by Untung Tanujaya's avatar Untung Tanujaya
Browse files

make serial radix

parent e79f852c
Branches
No related merge requests found
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
#include <sys/time.h>
void rng(int* arr, int n);
int getMax(int arr[], int n);
void countingSort(int arr[], int n, int exp);
void radixSort(int arr[], int n);
void print(int arr[], int n);
void rng(int* arr, int arrSize) {
int seed = 13516042; // Ganti dengan NIM anda sebagai seed.
srand(seed);
for(int i = 0; i < arrSize; i++) {
arr[i] = (int)rand();
}
}
//fungsi cari isi array yg terbesar
int getMax(int* arr, int arrSize)
{
int max = arr[0];
for (int i = 1; i < arrSize; i++){
if (arr[i] > max){
max = arr[i];
}
}
return max;
}
void countingSort(int* arr, int arrSize, int exp)
{
int sorted[arrSize];
int i, bucket[10] = {0};
{
int local_bucket[10]={0};
//exp untuk hilangin digit di belakang digit, % 10 hilangin digit didepan digit
for (i = 0; i < arrSize; i++)
{
local_bucket[ (arr[i]/exp)%10 ]++;
}
for(i=0;i<10;i++){
bucket[i] += local_bucket[i];
}
}
for (i = 1; i < 10; i++)
bucket[i] += bucket[i - 1];
for (i = arrSize - 1; i >= 0; i--)
{
sorted[bucket[ (arr[i]/exp)%10 ] - 1] = arr[i];
bucket[ (arr[i]/exp)%10 ]--;
}
for (i = 0; i < arrSize; i++)
arr[i] = sorted[i];
}
void radixSort(int* arr, int arrSize)
{
int maks = getMax(arr, arrSize);
for (int exp = 1; maks/exp > 0; exp *= 10)
countingSort(arr, arrSize, exp);
}
void print(int* arr, int size )
{
for (int i = 0; i < size; i++)
printf("%d \n", arr[i]);
}
int main(int argc, char *argv[]) {
long arrSize = strtol(argv[1], NULL, 10);//input array size
int arr[arrSize];
rng(arr, arrSize);
int* d_arr;
cudaMallocManaged(&d_arr, arrSize*sizeof(int));
cudaMemcpy(d_arr, arr, arrSize*sizeof(int), cudaMemcpyHostToDevice);
//radixSort<<<1,1>>>(d_arr, arrSize);
//int n = sizeof(arr)/sizeof(arr[0]);
radixSort(arr, arrSize);
print(arr, arrSize);
return 0;
}
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment