Я сделал программу (hw), которая подсчитывает частоту всех слов. Все мои алгоритмы занимает O (п) или O (N журнал N), однако мое слово счетчик принимает O (N^2)Есть ли способ сократить мою временную сложность O (n^2)?
алгоритм выглядит следующим образом:
for (int i = 0; i < no of elements; i++)
for (int j = 0; j < no of elements; j++)
if (the ith word == the jth word)
{
increase that word counter by 1;
break;
}
причина, почему я использовать таким образом, потому что список слов несортирован. Поэтому мой вопрос: было бы неплохо использовать сортировку вставки или сортировку, которая может сортировать список слов в альфебетическом порядке? И как выглядит такой вид для строкового массива? Список слов является массив строк, например:
string words[no of elements]
Спасибо за ваше время.
Сохраните ваши слова в двоичном дереве, и сложность поиска и увеличения счетчика слов сводится к O (log n). – usr2564301
Вставка сортировки - это O (n^2) сама по себе, так что это не поможет. – harold