gpt4 book ai didi

c - 如何按用户对给定的列和行按列和按行对二维数组进行排序

转载 作者:行者123 更新时间:2023-11-30 16:55:45 25 4
gpt4 key购买 nike

伙计们,这是我第一次使用 stackoverflow我想按行和按列对随机数数组进行排序之后我必须搜索给定的 key ,但我有库存第一部分。问题是用户应该选择数组的维度在(2-5000)之间,数组中的元素在(4-25百万)之间,每个元素可以从0到int MAX并且列数和行数彼此相等我找到了很好的代码,但我不明白如何更改它以满足我的程序的限制我尝试像这样 #define 我的二维数组

定义 R 5000

定义 C 5000

但是这是错误的这是我正在尝试编写的代码

#include<stdio.h>
#define R 500
#define C 500

void sort_rows(int *arr,int n)
{
int i;
for(i=1;i<n;i++)
{
int key=arr[i];
int j=i-1;
while(j>=0 && key<arr[j])
{
arr[j+1]=arr[j];
j--;
}
arr[j+1]=key;
}
}
void sort_column(int arr[500][500],int c)
{
int key,k;
int i,j;
for(i=0;i<c;i++)
{
for(j=1;j<c;j++)
{
key=arr[j][i];
k=j-1;
while(k>=0 && arr[k][i]>key)
{
arr[k+1][i]=arr[k][i];
k--;
}
arr[k+1][i]=key;
}
}
}
int main()
{
int arr[R][C];
int r,c;
int i,j,size_row,size_column;
printf("Enter Number of rows and columns(2-5000)");
scanf("%d%d",&r,&c);
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
arr[i][j]=rand()%(r*c)+1;
}
printf("Original array:\n");
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
printf("%d ",arr[i][j]);

}
printf("\n");
}
size_row=((sizeof(arr)/sizeof(arr[0][0])/(sizeof(arr[0])/sizeof(arr[0][0]))));
printf("%d",size_row);
for(i=0;i<size_row;i++)
{
sort_rows(arr[i],sizeof(arr[i])/sizeof(arr[i][0]));
}
size_column=sizeof(arr)/sizeof(arr[0]);
for(i=0;i<size_column;i++)
{
sort_column(arr,size_column);
}
printf("Sorted Array:\n");
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
printf("%d ",arr[i][j]);

}
printf("\n");
}
}

任何帮助都会很棒

最佳答案

您已使用 #define 定义的 R 和 C 声明了数组,但您从用户处读取了新值 r 和 c 并对其进行了处理。

您应该使用将使用的值来定义数组维度。

此外,您已将一个整数传递给 sort_column ,这被视为按值调用,但您应该传递数组指针以便能够编辑数组,这就是按引用调用。

希望有帮助。

关于c - 如何按用户对给定的列和行按列和按行对二维数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40201385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com