私は数字の行を含む大きな配列を持つアプリケーションに取り組んでいます、
transNum[20000][200]//this is the 2d array containing the numbers and always keep track of the line numbers
ネストされたループを使用して、最も頻繁なアイテムを探しています。これは
for(int i=0/*,lineitems=0*/;i<lineCounter;i++)
{
for(int j=0,shows=1;j<lineitem1[i];j++)
{
for(int t=i+1;t<lineCounter;t++)
{
for(int s=0;s<lineitem1[t];s++)
{
if(transNum[i][j]==transNum[t][s])
shows++;
}
}
if(shows/lineCounter>=0.2)
{
freItem[i][lineitem2[i]]=transNum[i][j];
lineitem2[i]++;
}
}
}
test [200] [200]のような小さな入力配列を使用してテストを行っていた場合、このループは正常に機能し、計算時間は許容範囲内ですが、配列に12000行が含まれている場合、計算時間が長すぎるため、このループを使用するのではなく、頻繁なアイテムを計算する他の方法があるかどうかを考えています.10688行でテストを実行したところ、すべての頻繁なアイテムを取得する時間は825805msであり、これは非常に高価です。