二维数组怎么传递?(吊桶排序)
自己写的吊桶排序,只要是指针表示的二维数组全部错误,怎么改才是正确的?鄙人菜鸟.请各位赐教.#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#define SIZE 1000
void print(int *ptr, int size);
void sort(int *ptr, int size, int midpos);
void copydata(int *ptr, int *ptr2, int size);
void cl_bucket(int *ptr2, int size);
int No_mid(int a, int midpos);
int No_len(int *ptr, int size);
main()
{
int array[SIZE];
int length, count;
srand(time(NULL));
for(count=0;count<=SIZE-1;count++)
array[count]=rand()%10000;
print(&array[0],SIZE);
length=No_len(&array[0],SIZE);
for(count=1;count<=length;count++)
sort(&array[0],SIZE,count);
print(&array[0],SIZE);
system("pause");
}
void print(int *ptr, int size)
{
int i;
for(i=0;i<=size-1;i++)
{
printf("6%d",*(ptr+i));
if((i+1)%10==0)
printf("\n");
}
printf("\n\n");
}
void sort(int *ptr, int size, int midpos)
{
int bucket[10][size];
int count, x=0, y=0;
for(count=0;count<=size-1;count++)
{
x=No_mid(*(ptr+count),midpos);
while(bucket[x][y])
{y+=1;}
bucket[x][y]=*(ptr+count);
}
cppydata(ptr,&bucket[0][0],size);
cl_bucket(&bucket[0][0],size);
}
void copydata(int *ptr, int *ptr2, int size)
{
int i, j, k=0, temp;
for(i=0;i<=9;i++)
for(j=0;j<=size-1;j++)
{
if(*(*(ptr2+i)+j)) /*invalid type argument of `unary*/
{
temp=*(*(ptr2+i)+j); /*invalid type argument of `unary*/
*(ptr+k)=temp;
k+=1;}
}
}
void cl_bucket(int *ptr2, int size)
{
int x, y;
for(x=0;x<=9;x++)
for(y=0;y<=size-1;y++)
*(*(ptr2+x)+y)=0; /*invalid type argument of `unary*/
}
int No_mid(int a, int midpos)
{
return (a/(int)pow(10,midpos-1))%10;
}
int No_len(int *ptr, int size)
{
int max=0, i, j;
for(i=0;i<=size-1;i++)
{
if(max<*(ptr+i))
max=*(ptr+i);
}
i=0;
while(j)
{
j=max/(int)pow(10,i);
i+=1;
}
return i;}