[英]Searching, sorting and printing a sorted 2D array of integers in C
我在以2d整数数组打印最大值的位置时遇到麻烦。 也就是说,元素数组[33] [2]的值为500,其中[33]表示第33周,[2]表示第二天。 我要printf(“最大为500,并在第X天找到”)以及printf(“最大的一周为:Y”)(对于第一个星期,它是连续7天中达到的一周)
另外,当我尝试对2D整数数组进行排序时,未对已排序版本的打印内容进行排序...我正在对临时气泡进行排序:
for (i=0; i<100;i++){
for(j=0;j<7;j++){
fscanf(filetoreadfrom,"%d\n",&array[i][j]);
if(array[i][j] < array[i][j+1]){
temp=array[i][j];
array[i][j]=array[i][j+1];
array[i][j+1]=temp;
}}}
我搞不清楚了...
您正在对数据进行排序,然后再读取所有数据。 首先读取数据:
for (i=0; i<100;i++){
for(j=0;j<7;j++){
fscanf(filetoreadfrom,"%d\n",&array[i][j]);
}
}
然后进行排序:
for (i=0; i<100;i++){
for(j=0;j<7;j++){
if(array[i][j] < array[i][j+1]){
temp=array[i][j];
array[i][j]=array[i][j+1];
array[i][j+1]=temp;
}
}
}
而且您的排序算法不正确。 例如,当j
为6时,语句array[i][j]=array[i][j+1];
尝试读取array[i][7]
。
只是一些随机的想法:索引总是以0开头。不需要排序就可以找到最大的数字。 您是否考虑过几天或几周可能具有相同价值的可能性? 如果对数组进行排序,您如何期望知道数据从哪里开始?
祝好运!
在冒泡排序中,必须保持循环遍历整个数组,直到不必交换特定循环上的任何元素。 您只循环一次,除非数组几乎从头开始排序,否则该循环将不起作用。
此外,你不读元素[i][j+1]
直到环路后[i][j]
完成,所以你比较[i][j]
到任何垃圾储存在[i][j+1]
。 在对它们进行排序之前,请先阅读所有元素!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.