Алгоритмы и структуры данных:

1. Дональд Кнут Искусство программирования, том 1. Основные алгоритмы = The Art of Computer Programming, vol.1. Fundamental Algorithms. — 3-е изд. — М.: «Вильямс», 2006. — С. 720. — ISBN 0-201-89683-4.

2. Дональд Кнут Искусство программирования, том 2. Получисленные алгоритмы = The Art of Computer Programming, vol.2. Seminumerical Algorithms. — 3-е изд. — М.: «Вильямс», 2007. — С. 832. — ISBN 0-201-89684-2.

3. Дональд Кнут Искусство программирования, том 3. Сортировка и поиск = The Art of Computer Programming, vol.3. Sorting and Searching. — 2-е изд. — М.: «Вильямс», 2007. — С. 824. — ISBN 0-201-89685-0.

4. Дональд Кнут Искусство программирования, том 4, A. Комбинаторные алгоритмы, часть 1 = The Art of Computer Programming, Volume 4A: Combinatorial Algorithms, Part 1. — М.: «Вильямс», 2013. — 960 с. — ISBN 978-5-8459-1744-7.

5. Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн. Алгоритмы: построение и анализ. — 3-е изд. — М.: «Вильямс», 2013. — С. 1323. — ISBN: 978-5-8459-1794-2.

6. Седжвик Р. Фундаментальные алгоритмы на C++. Анализ/Структуры данных/Сортировка/Поиск. — К.: "ДиаСофт", 2001. — С. 488. — ISBN: 966-7393-89-5.

7. Седжвик Р. Фундаментальные алгоритмы на C++. Алгоритмы на графах. — Спб.: ООО "ДиаСофтЮП", 2002. — С. 496. — ISBN: 5-937772-054-7.

8. Скиена С.С. Алгоритмы. Руководство по разработке. — СПб.: БХВ-Петербург, 2011. — С. 720. — ISBN 978-5-9775-0560-4, 978-1-84800-069-8.

9. Новиков Ф.А. Дискретная математика для программистов. — 3-е изд. — Спб.: Питер, 2000. — С. 301. — ISBN: 5-272-001830-4.

10. Гловацкая А.П. Методы и алгоритмы вычислительной математики. Учебное пособие для вузов. — М.: Радио и связь, 1999. — С. 408. — ISBN: 5-256-01458-7.

 

Java. Алгоритмы и структуры данных:

1. Герберт Шилдт. Java. Полное руководство. Java SE 7. — 8-е изд. — М.: «Вильямс», 2013. — С. 1104. — ISBN 978-5-8459-1759-1, 978-0-07-160630-1.

2. Лафоре Р. Структуры данных и алгоритмы в Java. Классика Computers Science. — Спб.: Питер, 2014. — С. 704. — ISBN: 978-5-496-00740-5.

3. Седжвик Р. Алгоритмы на Java. — 4-е изд. — М.: «Вильямс», 2013. — С. 848. — ISBN: 978-5-8459-1781-2.

4. Кубенский А. А. Создание и обработка структур данных в примерах на Java. — СПб.: БХВ-Петербург, 2001. — С. 336. — ISBN: 5-94157-095-3.

5. Hang T. Lau. A Java Library of Graph Algorithms and Optimization. Chapman & Hall/CRC, 2007. — С. 386. — ISBN: 1‐58488‐718‐4.

6. Гудрич М.Т., Тамассия Р. Структуры данных и алгоритмы в Java. — Мн.: Новое знание, 2003. — С. 671. — ISBN: 985-475-011-6.

 

Олимпиадное программирование:

1. Долинский М.С. Решение сложных и олимпиадных задач по программированию: Учебное пособие. — СПб.: Питер, 2006. — С. 366. — ISBN 5-469-00794-4.

2. Меньшиков Ф. Олимпиадные задачи по программированию. — Спб.: Питер, 2006. — С. 315. — ISBN: 5-469-00765-0.

3. Московские олимпиады по информатике / Под ред. Е. В. Андреевой, В. М. Гуровица и В. А. Матюхина — М.: МЦНМО, 2006. — 256 с. — ISBN 5-94057-233-2.

4. Скиена С.С., Ревилла М.А. Олимпиадные задачи по программированию. Руководство по подготовке к соревнованиям. — М.: КУДИЦ-ОБРАЗ, 2005. — С. 416. — ISBN 0-387-00163-8.

5. Воронин А.В., Кузнецов В.А., Корзун Д.Ж. Командные олимпиады по программированию: организация, задачи и решения. — Петрозаводск.: ПетрГУ, 2001. — С. 268. — ISBN: 5-8021-0147-4.

 

Алгоритмы работы со строками:

1. Окулов С.М. Алгоритмы обработки строк. — 2-е изд. — М.: БИНОМ, 2012. — С. 255. — ISBN 978-5-9963-0923-8.

2. Билл Смит. Методы и алгоритмы вычислений на строках. Теоретические основы регулярных вычислений. — М.: «Вильямс», 2006. — С. 496. — ISBN 978-5-9963-1133-0.

3. Гасфилд Д. Строки, деревья и последовательности в алгоритмах. — Спб.: Невский Диалект, БХВ-Петербург, 2003. — С. 654. — ISBN: 5-7940-0103-8.

 

Динамическое программирование:

1. Окулов С.М., Пестов О.А. Динамическое программирование. — М.: БИНОМ, 2012. — С. 296. — ISBN 978-5-9963-1133-0.

 

Полезные ссылки:

1. http://codeforces.ru - онлайн тренировки по программированию.

2. http://e-maxx.ru - база алгоритмов с реализациями на C++.

3. http://icpc.baylor.edu - официальный сайт международной студенческой олимпиады по программированию.

4. http://www.lektorium.tv/speaker/3256 - лекции Андрея Станкевича по алгоритмам и структурам данных.