По вашему опыту, что лучший язык веб-программирования используется для обработки сортировки и сравнения очень больших списков (т.е. десятки тысяч адресов электронной почты)?
Я являюсь самым знакомым с PHP. Я думаю, что это могло сделать задание, но я не уверен в других языках и если мог бы быть истец заключающего пари.
Спасибо!
Я бы хранил электронные письма в базе данных и использовал SQL для выполнения сортировки и поиска. Это то, для чего были разработаны базы данных, и у них будут интеллектуальные решения, которые превзойдут все, что большинство людей могут написать в коде.
Язык обычно не имеет большого значения. Выбирайте тот, с которым вам удобнее всего.
Конечный продукт формируется строителем, а не инструментами.
Можно ли выполнить сортировку внутри базы данных? Они предназначены для динамической сортировки и сравнения. Я бы посоветовал вам перейти к модели, которая позволяет БД обрабатывать такую деятельность.
Если вы действительно не можете использовать БД по какой-то причине, вам следует сосредоточиться на алгоритмах, а не на языках. Выберите язык на основе других критериев (личное знакомство, поддерживает ли он другие ваши задачи, есть ли у него активное сообщество поддержки и т. Д. И т. Д.) И определите лучший алгоритм с учетом особенностей этого языка. Например, согласно некоторым обсуждениям в https://stackoverflow.com/questions/309300/defend-php-convince-me-it-isnt-horrible , PHP имеет относительно низкую производительность рекурсии.
А если серьезно, используйте для этого базу данных.
Это не зависит от языка программирования, это зависит от логики, скажем, от индексов или схем таблиц и механизма кэширования.
Вы также можете использовать дерево, которое представляет собой структуру данных префиксного дерева - для сортировки в памяти.
Адреса электронной почты имеют ограничительный набор символов ( az
, 0-9
, _
, .
и т. Д.), Поэтому trieNode будут только эти персонажи. Это руководство topcoder по trie является хорошей отправной точкой, если вы еще не знаете о trie.
Вы должны перебрать все строки, чтобы построить дерево.
Поиск / сравнение занимает время O (l), где l - длина сравниваемой строки.
Сортировка требует, чтобы вы прошли все trieNodes дерева дерева с использованием DFS (поиск в глубину) - время O (| V | + | E |).