求教一个运行错误
#include<iostream>
using namespace std;
//求数据的最大位数
int maxbit(int data[], int n)
{
int d = 1; //保存最大的位数
int p = 10;
for (int i = 0; i < n; ++i)
{
while (data[i] >= p)
{
p *= 10;
++d;
}
}
return d;
}
void radixsort(int data[], int n)
{
int d = maxbit(data,n);
int* tmp = new int[n+10];
int* count = new int[11];
int i;
int j;
int k;
int radix = 1;
for (i = 1; i <= d; ++i)
{
for (j = 0; j < 10; ++j)
{
count[j] = 0; //每次分配前清空计数器
}
for (j = 0; j < n; ++j)
{
k = (data[i]/radix)%10; //统计每个桶中的记录数
count[k]++;
}
for (j = 1; j < 10; j++)
{
count[j] += count[j-1];
}
for (j = n-1; j >=0; --j)
{
k = (data[j]/radix)%10;
tmp[count[k] - 1] = data[j];
count[k]--;
}
for (j = 0; j < n; ++j)
{
data[j] = tmp[j];
}
radix *= 10;
}
delete []tmp;
delete []count;
}
int main()
{
int a[] = {12,34,56,79,55,42,45,91};
radixsort(a,8);
for (int i =0; i< 8; ++i)
{
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}
for (j = n-1; j >=0; --j)
{
k = (data[j]/radix)%10;
tmp[count[k] - 1] = data[j];
count[k]--;
}