diff --git a/src/rad2 b/src/rad2
new file mode 100755
index 0000000000000000000000000000000000000000..db2a378010b194cd994b309489505efa5fa44e96
Binary files /dev/null and b/src/rad2 differ
diff --git a/src/radix_par b/src/radix_par
new file mode 100755
index 0000000000000000000000000000000000000000..7a027978875c8c9a404b81fda39d4867a1287257
Binary files /dev/null and b/src/radix_par differ
diff --git a/src/radix_par2.cpp b/src/radix_par2.cpp
deleted file mode 100644
index eae49a3713dec42e968c6d4cea75d8dcc9499f6f..0000000000000000000000000000000000000000
--- a/src/radix_par2.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-// C++ implementation of Radix Sort 
-#include <iostream> 
-#include <cstdlib>
-#include <time.h>
-using namespace std; 
-  
-// A utility function to get maximum value in arr[] 
-int getMax(int arr[], int n) 
-{ 
-    int mx = arr[0]; 
-    for (int i = 1; i < n; i++) 
-        if (arr[i] > mx) 
-            mx = arr[i]; 
-    return mx; 
-} 
-  
-// A function to do counting sort of arr[] according to 
-// the digit represented by exp. 
-__global__ void countSort(int arr[], int n, int exp) 
-{ 
-    int output[n]; // output array 
-    int i, count[10] = {0}; 
-  
-    // Store count of occurrences in count[] 
-    for (i = 0; i < n; i++) 
-        count[ (arr[i]/exp)%10 ]++; 
-  
-    // Change count[i] so that count[i] now contains actual 
-    //  position of this digit in output[] 
-    for (i = 1; i < 10; i++) 
-        count[i] += count[i - 1]; 
-  
-    // Build the output array 
-    for (i = n - 1; i >= 0; i--) 
-    { 
-        output[count[ (arr[i]/exp)%10 ] - 1] = arr[i]; 
-        count[ (arr[i]/exp)%10 ]--; 
-    } 
-  
-    // Copy the output array to arr[], so that arr[] now 
-    // contains sorted numbers according to current digit 
-    for (i = 0; i < n; i++) 
-        arr[i] = output[i]; 
-} 
-  
-// The main function to that sorts arr[] of size n using  
-// Radix Sort 
-void radixsort(int arr[], int n) 
-{ 
-    int *d_arr;
-    // Find the maximum number to know number of digits 
-    int m = getMax(arr, n); 
-  
-    // Do counting sort for every digit. Note that instead 
-    // of passing digit number, exp is passed. exp is 10^i 
-    // where i is current digit number 
-
-    cudaMalloc((void**)&d_arr,sizeof(int)*n);
-    cudaMemcpy(d_arr, arr, sizeof(int)*n,cudaMemcpyHostToDevice);
- 
-    for (int exp = 1; m/exp > 0; exp *= 10) {
-        countSort<<<1,32>>>(arr, n, exp);
-        cudaMemcpy(arr, d_arr, sizeof(int)*n, cudaMemcpyDeviceToHost);
-    }
-
-    cudaFree(d_arr); 
-} 
-  
-// A utility function to print an array 
-void print(int arr[], int n) 
-{ 
-    for (int i = 0; i < n; i++) 
-        cout << arr[i] << "\n"; 
-} 
-  
-void rng(int* arr,int n){
-    int seed = 13516067;
-    srand(seed);
-    for (long i=0; i<n; i++){
-        arr[i] = (int) rand();
-    }
-}
-
- 
-timespec diff(timespec start, timespec end)
-{
-    timespec temp;
-    if ((end.tv_nsec - start.tv_nsec) < 0) {
-        temp.tv_sec = end.tv_sec - start.tv_sec - 1;
-        temp.tv_nsec = 1000000000 + end.tv_nsec - start.tv_nsec;
-    } else {
-        temp.tv_sec = end.tv_sec - start.tv_sec;
-        temp.tv_nsec = end.tv_nsec - start.tv_nsec;
-    }
-    return temp;
-}
-
-// Driver program to test above functions 
-int main() 
-{ 
-    timespec start, stop;
-    
-    int n;
-    cout<<"Masukkan nilai N\n";
-    cin>>n;
-    int arr[n];
-    rng(arr,n);
-    clock_gettime(CLOCK_REALTIME, &start);
-    radixsort(arr,n);
-    clock_gettime(CLOCK_REALTIME, &stop);
-    print(arr,n);
-    
-    timespec duration = diff(start, stop);
-    long time = duration.tv_sec * 1000000 + duration.tv_nsec/1000;
-    printf("\n%d.%09d s\n", duration.tv_sec, duration.tv_nsec);
-    
-    return 0; 
-} 
\ No newline at end of file
diff --git a/src/radix_sort_par b/src/radix_sort_par
new file mode 100755
index 0000000000000000000000000000000000000000..039d5089f018ed7db3264feb0c143f65b61f842c
Binary files /dev/null and b/src/radix_sort_par differ
diff --git a/src/radix_sort_par.cu b/src/radix_sort_par.cu
index ecc6b1814b7c678a37b24bad9fab4e610a324587..d77c5073d7e151e9b24a231bb732f91775ecc221 100644
--- a/src/radix_sort_par.cu
+++ b/src/radix_sort_par.cu
@@ -18,14 +18,14 @@ __device__ int getMax(int arr[], int n)
 // the digit represented by exp. 
 __device__ void countSort(int arr[], int n, int exp) 
 { 
-	int index = threadIdx.x;
-    int stride = blockDim.x;
+	//int index = threadIdx.x;
+    //int stride = blockDim.x;
 
     int *output= (int*)malloc(sizeof(int)*n); // output array 
     int i, count[10] = {0}; 
   
     // Store count of occurrences in count[] 
-    for (i = index; i < n; i+=stride) 
+    for (i = 0; i < n; i++) 
         count[ (arr[i]/exp)%10 ]++; 
   
     // Change count[i] so that count[i] now contains actual 
@@ -34,7 +34,7 @@ __device__ void countSort(int arr[], int n, int exp)
         count[i] += count[i - 1]; 
   
     // Build the output array 
-    for (i = n - 1; i >= index; i-=stride) 
+    for (i = n - 1; i >= 0; i--) 
     { 
         output[count[ (arr[i]/exp)%10 ] - 1] = arr[i]; 
         count[ (arr[i]/exp)%10 ]--; 
@@ -42,7 +42,7 @@ __device__ void countSort(int arr[], int n, int exp)
   
     // Copy the output array to arr[], so that arr[] now 
     // contains sorted numbers according to current digit 
-    for (i = index; i < n; i+=stride) 
+    for (i = 0; i < n; i++) 
         arr[i] = output[i]; 
 } 
   
@@ -114,7 +114,7 @@ int main(int argc, char *argv[])
     n= atoi(argv[1]);
     int arr[n];
     rng(arr,n);
-
+    
     cudaMalloc((void**)&d_arr,sizeof(int)*n);
     cudaMemcpy(d_arr, arr, sizeof(int)*n,cudaMemcpyHostToDevice);
 
@@ -132,4 +132,4 @@ int main(int argc, char *argv[])
     cudaFree(d_arr);
     
     return 0; 
-} 
+}
diff --git a/src/radix_sort_seq b/src/radix_sort_seq
new file mode 100755
index 0000000000000000000000000000000000000000..9ad6573e7dcc4676e1900d6c7c830bca4fc5d4eb
Binary files /dev/null and b/src/radix_sort_seq differ