PLease help me.Wots the problem with following code....?
Helo
This is a code for Radix sort. n it is giving a run-time Error :
"Run-Time Check Failure #2 - Stack around the variable 'count' was
corrupted."
I have cross checked this code a millions of times.
what is the problem here..??????????????????
#include "stdafx.h"
#include<iostream>
#include<stdlib.h>
using namespace std;
#define CHAR_BIT 8
#define UCHAR_MAX 0xff
#define RANGE ((1U << CHAR_BIT)+1)
#define digit(x,i) ( (x) >> ( (i) * CHAR_BIT) ) & UCHAR_MAX
#define SIZE 100
void radixsort(long *a, long );
void radixpass(long *a, long *aux, long , int radix);
void makerandom(long *a, long );
int _tmain(int argc, _TCHAR* argv[])
{
long data[SIZE];
makerandom(data,SIZE);
radixsort(data,SIZE);
for(int i=0;i<SIZE;i++)
cout<<data[i]<<"\n";
return 0;
}
void makerandom(long *a,long N)
{
for(int i=0;i<N;i++)
a[i]=rand();
}
void radixsort(long *a,long N)
{
long *aux=(long *)malloc(N*sizeof(long));
for(int radix=0;radix< sizeof(*a);radix++)
radixpass(a,aux,SIZE,radix);
free(aux);
}
void radixpass(long *a,long *aux, long N, int radix)
{
long count[RANGE];
long *cp=count;
for(int i=0;i<RANGE;i++,cp++)
*cp=0;
for(int i=0;i<N;i++)
count[ digit( a[i], radix ) +1 ]++;
for(int i=0;i< RANGE;i++)
count[i+1]+=count[i];
for(int i=0;i<N;i++)
aux[ count[digit(a[i],radix)]++ ]=a[i];
for(int i=0;i<N;i++)
a[i]=aux[i];
}