Radix Sort C++ Algoritma Random Data
ALGORITMA
1. MULAI
2. Menentukan panjang array dimana elemennya berukuran 100. Tetapi tidak dideklarasikan nilai elemen
3. Memanggil fungsi make_random untuk mengacak data dan isinya dengan menggunakan nilai bitwise mengeser bit.
4. Pada fungsi radix dilakukan perulangan denga memanggil nilai dari jumlah panjang array dan bitwisenya.
5. Dimana pada fungsi radixsort kita juga memanggil fungsi radi x dengan 4 parameter yang berbeda.
6. Menampilkan hasil pengurutan..
7. SELESAI
SOURCE CODE
/* Radix Sort */
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
//mendeklarasikan fungsi
void radix(int byte,long N,long*source,long*dest);
void radixsort(long*source,long*temp,long N);
void make_random(long*data,long N);
//mendeklarasikan panjang data
long data[100];
long temp[100];
int main(void){
make_random(data,100);// membuat random dengan memanggil fungsi make_random dengan paramenter array data dengan elemen 100
radixsort(data,temp,100);//memangguk fungsi radix sort
for(int i=0;i<100;i++) cout<<data[i]<<“n”;//membuat perulangan untuk menampilkan hasil
}
void radix(int byte,long N,long*source,long*dest){//mendeklarasikan fungsi radix
long count[256];//mendeklarasikan panjang array count 256 elemen
long index[256];
int i;
memset(count,0,sizeof(count));
for( i=1;i<N;i++) count[((source[i])>>(byte*8))&0xff]++;//menghitung array dengan menggeser bitwise
index[0]=0;
for(i=1;i<256;i++) index[i]=index[i-1]+count[i-1];//melakukan perulangan array index + array count
for(i=0;i<N;i++) dest[index[((source[i]>>(byte*8)&0xff))]++]=source[i];//melakukan perulangan dengan menggeser bitwise code sebagai indexnya.
}
void radixsort(long*source,long*temp,long N)
{
radix(0,N,source,temp);//memanggil fungsi radix dengan parameter 0,N,source,temp
radix(1,N,temp,source);//memanggil fungsi radix dengan parameter 0,N,temp,source
radix(2,N,source,temp);//memanggil fungsi radix dengan parameter 0,N,source,temp
radix(3,N,temp,source);//memanggil fungsi radix dengan parameter 0,N,temp,source
}
void make_random(long*data,long N){
for(int i=0;i<N;i++) data[i]=rand()|(rand()<<16);//membuat data random dari array yang dideklarasikan sebagai
}