无法创建[50000] [10]

时间:2016-04-27 09:58:31

标签: c arrays bucket-sort

下面的代码用于数组的bucketsorting。它适用于10k数据集。但不知何故,它停止工作50k或100k整数。 (注意:文件中有50001个整数)

有了一些printf函数,我发现代码无法在创建int [N] [10]时进一步发展。它停在这里。它不能得到N号。

  

void bucket_inserting(int b [],int N,int max){

     

int a [N] [10]

希望很清楚。能从你们那里得到一些帮助会很高兴。

int largestNumber(int array[],int n)
{

   int  maximum, c;

  maximum = array[0];

  for (c = 1; c < n; c++)
  {
    if (array[c] > maximum)
    {
       maximum  = array[c];
    }
  }
  return maximum;
}


void bucket_inserting(int b[],int N, int max){

int a[N][10];

int size,c,k,i,j,temp,range=max/10;

int count[10]= {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};



for(i=0;i<N;i++){
      temp=b[i];
        for(j=0;j<10;j++){
            if(temp>=j*(range) && (temp-1)<(j+1)*(range)){
            a[count[j]][j]=temp;
            count[j]=count[j]+1;

            }
        }
}



    /*sort each bucket*/

    for(j=0;j<10;j++){
        size=count[j];
        for (i = 1; i < size; i++)
        {
            int tmp = a[i][j];

            for (c=i; c>0 && tmp < a[c-1][j]; c--)
                a[c][j] = a[c-1][j];
                a[c][j] = tmp;
        }
}




    /*Printing*/
    for(j=0;j<10;j++){
        size=count[j];
        for(i=0;i<size;i++)
        printf("%d \n",a[i][j]);
        }

}




int main(){


/*read file*/


    FILE *file = fopen("t_50000.txt", "r");
    int lol[50001];

    int i=0, num, max,range;
    while(fscanf(file, "%d", &num) == 1) {
        lol[i] = num;
        i++;
    }

    fclose(file);

/*find max*/

max= largestNumber(lol,50001);
bucket_inserting(lol,50001,max);


}

0 个答案:

没有答案