C语言中的气泡排序2D数组
我需要一个函数来对随机生成的2D数组进行气泡排序。 同样使用rand()方法,我希望它生成介于(1000000)之间的数字,但它没有给出所需的范围,是否有找到解决方案的建议C语言中的气泡排序2D数组,c,arrays,random,bubble-sort,C,Arrays,Random,Bubble Sort,我需要一个函数来对随机生成的2D数组进行气泡排序。 同样使用rand()方法,我希望它生成介于(1000000)之间的数字,但它没有给出所需的范围,是否有找到解决方案的建议 int **matrix() { int **matrix; int row, column; long s, k; int i,j,f,swap; srand(time(NULL)); printf("Number of rows: "); scanf("%d"
int **matrix()
{
int **matrix;
int row, column;
long s, k;
int i,j,f,swap;
srand(time(NULL));
printf("Number of rows: ");
scanf("%d", &row);
printf("Number of column: ");
scanf("%d", &column);
matrix = (int **) calloc(row, sizeof(int));
for(i = 0; i < row; i++)
matrix[i] = (int *) calloc(column, sizeof(int));
for(s = 0; s < row; s++)
{
for(k = 0; k < column; k++)
{
matrix[s][k]=rand()%10000000;
}
}
for(s = 0; s < row; s++)
{
for(k = 0; k < column; k++)
printf("%4d \t\t", matrix[s][k]);
printf("\n");
}
for(i = 0; i < row; i++)
free((void *) matrix[i]);
free((void *) matrix);
return **matrix;
}
int**matrix()
{
int**矩阵;
int行,列;
长s,k;
int i,j,f,swap;
srand(时间(空));
printf(“行数:”);
scanf(“%d”行和第行);
printf(“列数:”);
scanf(“%d”列和列);
矩阵=(int**)calloc(row,sizeof(int));
对于(i=0;i|
使用气泡排序对二维数组进行排序与对一维数组进行排序略有不同。我可以帮你回答这部分问题
其他问题:
根据本节:
for(i = 0; i < row; i++)
matrix[i] = (int *) calloc(column, sizeof(int));
应该为int*
matrix = calloc(row, sizeof(int *));
^
(注意,calloc()
的强制转换也已删除。在C中。)
同样使用rand()方法,我希望它生成介于(1000000)之间的数字,但它没有给出所需的范围,有没有找到解决方案的建议
int **matrix()
{
int **matrix;
int row, column;
long s, k;
int i,j,f,swap;
srand(time(NULL));
printf("Number of rows: ");
scanf("%d", &row);
printf("Number of column: ");
scanf("%d", &column);
matrix = (int **) calloc(row, sizeof(int));
for(i = 0; i < row; i++)
matrix[i] = (int *) calloc(column, sizeof(int));
for(s = 0; s < row; s++)
{
for(k = 0; k < column; k++)
{
matrix[s][k]=rand()%10000000;
}
}
for(s = 0; s < row; s++)
{
for(k = 0; k < column; k++)
printf("%4d \t\t", matrix[s][k]);
printf("\n");
}
for(i = 0; i < row; i++)
free((void *) matrix[i]);
free((void *) matrix);
return **matrix;
}
(记入贷方)
rand()
扩展以提供1000000个唯一值的伪随机分布:
unsigned long rand_ex(void);
int main(void){
srand(clock());
for(int i=0;i<100;i++)
{
printf("%10d: %10lu\n", i, rand_ex());
}
return 0;
}
unsigned long rand_ex(void)
{
unsigned long x;
x = rand();
x <<= 15;
x ^= rand();
x %= 1000001;
return x;
}
unsigned long rand_ex(void);
内部主(空){
srand(clock());
对于(int i=0;imatrix=(int**)calloc(row,sizeof(int));
-->matrix=calloc(row,sizeof(int*);
OT:我将使用列
而不是冒号来尝试打印。它可能少于10000000。这里使用的内存分配方法有点缺陷(请参阅答案)并且不会创建连续内存,这可能会使冒泡排序的操作复杂化。您是否考虑过使用?这将生成一个连续内存块。例如:int rows=1000;int cols=1000;int array[rows][cols]={0};
创建1000000
连续的int
内存位置,然后按照通常的方式对其进行气泡排序:在嵌套的中,我可以回答您的问题吗?