Я работаю над приложением, которое имеет большой массив, содержащий строки чисел,
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 строках, и время для получения всех частых элементов составляет 825805 мс, что является дорогостоящим.