Я работаю над приложением, которое имеет большой массив, содержащий строки чисел,
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 мс, что слишком дорого.
lineCounter
иlineitem1
? - person Starkey   schedule 02.10.2010