Изучение алгоритмов и [закрытых] основных принципов структур данных

Можете Вы рекомендовать мне книгу или (лучше!) сайт со многими тяжелыми проблемами и упражнениями о структурах данных?

Я уже отвечаю на Euler вопросы проекта, но эти вопросы об интересных, но редких алгоритмах. Я едва использовал даже простое дерево. Возможно, существует сайт с упражнениями как: эй, необходимо вычислить это:.... Сделайте это с помощью дерева. Теперь сделайте это с помощью застежки-молнии. Загрузите свой C (Haskell, Lisp, даже Паскаль или Крепость идут), решение. О, Ваше решение является настолько медленным!

Самообразование очень трудно тогда Вы пытающийся изучить очень общие, фундаментальные вещи. Как я могу помочь мне с ними, не проявляя внимание к курсам или безотносительно?

55
задан Valentin Golev 19 February 2010 в 22:45
поделиться

7 ответов

Введение в алгоритмы, третье издание, Кормен, Лейзерсон, Ривест и Стейн - хорошее введение в алгоритмы и структуры данных. В конце каждой главы есть много упражнений. большинство из них простые, но есть и более сложные.

24
ответ дан 7 November 2019 в 07:25
поделиться

Видеолекции Национальной программы по расширенному обучению (NPTel) на Youtube-канале NPTEL . Они выполняются семью IIT и IISc Бангалора в Индии и финансируются MHRD, правительством Индии.

Еще много инженерных лекций .

20
ответ дан 7 November 2019 в 07:25
поделиться

Какая часть вашего приложения разрывается? Пользовательский интерфейс или бизнес-логика

Бизнес-логика должна быть полностью отделена от пользовательского интерфейса и протестирована отдельно. В частности, гораздо проще использовать автоматизированные средства модульного тестирования против разделенной бизнес-логики, чем против пользовательского интерфейса.

-121--4012934-

AFAIK, современные JVM больше не разделяются на длинные и двойные операции. Я не знаю ни одной ссылки, которая утверждает, что это все еще проблема. Например, см. AtomicLong, который не использует синхронизацию в JVM Sun.

Если вы хотите быть уверены, что это не проблема, то вы можете использовать синхронизацию как get (), так и set (). Однако если вы выполняете такую операцию, как add, т.е. set (get () + 1), то эта синхронизация покупает вам мало, вам все равно придется синхронизировать объект для всей операции. (Лучший способ обойти это - использовать одну операцию для добавления (n), которая синхронизирована)

Однако лучшим решением является использование AtomicLong. Это поддерживает атомарные операции, такие как получение, установка и добавление, и не использует синхронизацию.

-121--2439236-

Этот является дубликатом .

Я рекомендую сайт открытого курса MIT здесь . Есть курсы алгоритмов в разделе «Электротехника и информатика» некоторые пути вниз по странице.

6.006 - Introduction to Algorithms
6.046J - Introduction to Algorithms (SMA 5503)

Я рекомендую последнее. Материалы находятся на сайте. Видео, вероятно, лучше всего получить на YouTube здесь - поиск «алгоритмов mit». Учебник пользуется большим уважением. Третий выпуск только вышел, второй выпуск соответствует курсу. Первое издание также было включено в состав Dr Dobbs Algorithms and Data Structures CD ROM .

Никлаус Вирт имеет книгу Алгоритмы и структуры данных, доступную для загрузки с его личного сайта . У меня есть версия для печати Modula 2, и хотя это не замена Кормену (или aho hopcroft ullman и т.д.), это хорошая книга.

10
ответ дан 7 November 2019 в 07:25
поделиться

Помимо вышеупомянутых Кормена, Лейзерсона и Ривеста, есть также совсем новая книга Питера Брасса «Расширенные структуры данных» . У нее довольно уродливый пример кода на C, и автор несколько фанатичен по поводу производительности (например, он не использует рекурсию), но теоретическое содержание этой книги блестящее и уникальное, оно почти не пересекается с Cormen. Я ожидаю, что это станет классикой.

4
ответ дан 7 November 2019 в 07:25
поделиться

Хороший учебник с упражнениями в конце кажется лучшим способом.

1
ответ дан 7 November 2019 в 07:25
поделиться

Дополнение к действительно хорошему учебнику Введение в алгоритмы, третье издание, Авторы Кормен, Лейзерсон, Ривест и Стейн , я настоятельно рекомендую посмотреть доступные онлайн видео лекций Лейзерсона в Массачусетском технологическом институте . Если у вас есть книга и лекции, это как если бы вы учились в Массачусетском технологическом институте; -)

http://videolectures.net/mit6046jf05_introduction_algorithms/

1
ответ дан 7 November 2019 в 07:25
поделиться

Замечательная бесплатная электронная книга - « Структуры данных и алгоритмы ». Содержит реализацию общих алгоритмов в псевдокоде и в явном виде. К тому же довольно приятные и внятные схемы и графика.

Даже Джон Скит упомянул об этом в своем блоге. : -)

Кроме того, это книга объемом менее 100 страниц (как вы, возможно, знаете, многие программисты не читают некоторые книги ).

15
ответ дан 7 November 2019 в 07:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: