Можете Вы рекомендовать мне книгу или (лучше!) сайт со многими тяжелыми проблемами и упражнениями о структурах данных?
Я уже отвечаю на Euler вопросы проекта, но эти вопросы об интересных, но редких алгоритмах. Я едва использовал даже простое дерево. Возможно, существует сайт с упражнениями как: эй, необходимо вычислить это:.... Сделайте это с помощью дерева. Теперь сделайте это с помощью застежки-молнии. Загрузите свой C (Haskell, Lisp, даже Паскаль или Крепость идут), решение. О, Ваше решение является настолько медленным!
Самообразование очень трудно тогда Вы пытающийся изучить очень общие, фундаментальные вещи. Как я могу помочь мне с ними, не проявляя внимание к курсам или безотносительно?
Введение в алгоритмы, третье издание, Кормен, Лейзерсон, Ривест и Стейн - хорошее введение в алгоритмы и структуры данных. В конце каждой главы есть много упражнений. большинство из них простые, но есть и более сложные.
Видеолекции Национальной программы по расширенному обучению (NPTel) на Youtube-канале NPTEL . Они выполняются семью IIT и IISc Бангалора в Индии и финансируются MHRD, правительством Индии.
Еще много инженерных лекций .
Какая часть вашего приложения разрывается? Пользовательский интерфейс или бизнес-логика
Бизнес-логика должна быть полностью отделена от пользовательского интерфейса и протестирована отдельно. В частности, гораздо проще использовать автоматизированные средства модульного тестирования против разделенной бизнес-логики, чем против пользовательского интерфейса.
-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 и т.д.), это хорошая книга.
Помимо вышеупомянутых Кормена, Лейзерсона и Ривеста, есть также совсем новая книга Питера Брасса «Расширенные структуры данных» . У нее довольно уродливый пример кода на C, и автор несколько фанатичен по поводу производительности (например, он не использует рекурсию), но теоретическое содержание этой книги блестящее и уникальное, оно почти не пересекается с Cormen. Я ожидаю, что это станет классикой.
Хороший учебник с упражнениями в конце кажется лучшим способом.
Дополнение к действительно хорошему учебнику Введение в алгоритмы, третье издание, Авторы Кормен, Лейзерсон, Ривест и Стейн , я настоятельно рекомендую посмотреть доступные онлайн видео лекций Лейзерсона в Массачусетском технологическом институте . Если у вас есть книга и лекции, это как если бы вы учились в Массачусетском технологическом институте; -)
http://videolectures.net/mit6046jf05_introduction_algorithms/
Замечательная бесплатная электронная книга - « Структуры данных и алгоритмы ». Содержит реализацию общих алгоритмов в псевдокоде и в явном виде. К тому же довольно приятные и внятные схемы и графика.
Даже Джон Скит упомянул об этом в своем блоге. : -)
Кроме того, это книга объемом менее 100 страниц (как вы, возможно, знаете, многие программисты не читают некоторые книги ).