C 查找频繁出现的元素的总数

C 查找频繁出现的元素的总数,c,segmentation-fault,public-key-pinning,C,Segmentation Fault,Public Key Pinning,我最近在研究数字组, 我有一个大的数字序列垂直存储。 我正在计算哪个数字出现了多少次,然后我选择了命中率高的数字 我的代码如下所示: // select the most repeated number int countArray[1000]; seq_len = i; for (i=0; i < seq_len; i++) { scanf("%d", page_seq[i]); countArray[i] = -1;

我最近在研究数字组, 我有一个大的数字序列垂直存储。 我正在计算哪个数字出现了多少次,然后我选择了命中率高的数字

我的代码如下所示:

 // select the most repeated number 
 int countArray[1000];
    seq_len = i;
    for (i=0; i < seq_len; i++) {
            scanf("%d", page_seq[i]);
            countArray[i] = -1; 
 }

    for(i=0; i < seq_len; i++) {
            count = 1;
            for( j = i+1; j < seq_len; j++) {
                    if(page_seq[i] == page_seq[j]) {
                            countArray[j] = 0;
                            count++;
                    }
            }
            if(countArray[i] != 0) {
                    countArray[i] = count;
            }
    }
     //print count of each page frequency
    for(i=0; i < seq_len; i++) {
            if(countArray[i] != 0) {
            printf("page %d : count %d\n", page_seq[i], countArray[i]);
            }
    }

      //distinguish most frequently readed page and print its read count

     int most_freq;
 int maxPage=-1, maxPageIdx=-1;
 int pinned_page;
    for(i=0; i < seq_len; i++) {
            if(countArray[i] != 0) {
            if(page_seq[i] > maxPage) {
                    maxPage = page_seq[i];
                    maxPageIdx = i;
            }
    }
    for(i=0; i < seq_len; ++i) {
            if(countArray[0] < countArray[i])
                    countArray[0] = countArray[i];
             scanf("%d",countArray[i]);
            most_freq = countArray[0];
    }
    for (i =0; i< seq_len; i++) {
            if(countArray[i]  > most_freq){
                    most_freq = countArray[i];
                    count++;
            }
    }
    }
    pinned_page = page_seq[maxPage];
    printf("pinned page %d\n", pinned_page);
//选择重复次数最多的数字
int countArray[1000];
seq_len=i;
对于(i=0;imaxPage){
maxPage=页面顺序[i];
maxPageIdx=i;
}
}
对于(i=0;imost_freq){
most_freq=countArray[i];
计数++;
}
}
}
固定页面=页面顺序[最大页面];
printf(“固定页面%d\n”,固定页面);
它适用于简单的(1,2,3,4)数字,我得到了我的每页频率计数,我看到了计数最高的数字,但在ex中。
139595776
139538432
139534336
139632640
这些数字没有显示最高计数的数字,相反,我得到了分段错误(核心转储)


任何帮助都将不胜感激

您可能在处理大数字时遇到问题,因为您使用的是int.Basic有符号整数类型。至少能够包含[−32767,+32767]范围;[3] [4]因此,它的大小至少为16位。尝试使用long而不是int,这可能对您的问题有所帮助。

scanf(“%d”,countArray[i])-->
scanf(“%d”和&countArray[i])
(尽管scanf没有什么意义,但可能是您想要printf()?)可能超出了
countArray
的范围?您是否尝试过使用调试器捕捉实际发生的崩溃,并在代码中找到它发生的位置?您是否检查了该位置所有相关变量的值?它们看起来正常吗?通常数组是按行存储的。所以更横向“垂直”是什么意思??说:我们不是一个调试网站。提供并学习。
pinned_page=page_seq[maxPage]-->
pinned_page=page_seq[maxPageIdx]