繁体   English   中英

在C中搜索,排序和打印排序的2D整数数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM