Сортировка массива с одинаковыми значениями и подсчетом их количества

 

Есть массив с данными типа {text, text, text1, text147, text45, text, text65, text65 }

Задача отсортировать и посчитать сколько раз встречается то или оное слово...

 

Ну а в чем проблема-то ?

Если у тебя в массиве слова, и тебе надо выбрать их - используй силу  класс CArrayString

Там есть сортировка, а дальше - пробегаешься по массиву, и подсчитываешь одинаковые слова.

Или там не слова, а целые фразы, и надо как-то выбирать их ?

 

Вот если кому надо считает количество совпадений текста в массиве плюс упорядочивает массив

   int x=0,r=0;
   bool flag=false;
   ZeroMemory(count);
   while(x<ArraySize(mass))
     {
      flag=false;
      //if(StringFind(mass[x].s_FileName,".zip")!=-1 || StringFind(mass[x].s_FileName,".csv")!=-1) // посчитать файлы по расширению
        {
         for(int t=0; t<ArraySize(count); t++)
            if(mass[x].s_FileName==count[t].FileName)
              {
               flag=true;
               count[t].Count++;
               break;
              }

         if(!flag)
           {
            ArrayResize(count,r+1,3000);
            count[r].FileName=mass[x].s_FileName;
            r++;
           }
        }
      x++;
     }

//   Print(" Name "+count[y].FileName+"    "+IntegerToString(count[y].Count+1));
 
Vladimir Pastushak:

Вот если кому надо считает количество совпадений текста в массиве плюс упорядочивает массив


Этот алгоритм подсчитывает количество дублей в массиве + убирает их из результирующего массива, что не совпадает с заявлением.

+ Переалокация массива в каждой операции - то еще зло :)

 
Aleksei Radchenko:

Этот алгоритм подсчитывает количество дублей в массиве + убирает их из результирующего массива, что не совпадает с заявлением.

+ Переалокация массива в каждой операции - то еще зло :)


Предложите свой вариант...

Причина обращения: