2011-03-31 2 views
5

В настоящее время я нахожусь на полпути через свой первый класс алгоритмов и структур данных. К сожалению, мой учитель не очень хорош, и онлайн-книга, которую мы используем, невероятно расплывчата в своих описаниях (http://people.cs.vt.edu/~shaffer/Book/). Я до сих пор поддерживаю A, в основном из-за удачи и здравого смысла, но он начинает получать много теперь сложнее, когда мы имеем дело с сортировками, поисками и более продвинутыми структурами данных, такими как графики.Алгоритмы и структуры данных

Мне было интересно, есть ли какие-либо онлайн-ресурсы, которые помогут мне лучше изучить эту тему, которую вы бы порекомендовали. Я понимаю, что важно хорошо знать эту тему, особенно при написании эффективного кода, а также при опросе на работу, поэтому я открыт для любых предложений, которые помогут мне лучше изучить и понять алгоритмы и структуры данных.

+0

http://stackoverflow.com/questions/3665370/book-to-learn-advance-concepts-in-data-structures-and-algorithms Эти Арен» t обязательно для продвинутых, – dfb

ответ

0

Лучшая книга, которую я когда-либо видел для обучения алгоритм и структуру данных является MIT Введение Алгоритмы. Это хорошо для вас, независимо от вашего уровня, хорошо для начинающих, умных и продвинутых учащихся.

1

Получить сами Skiena's The Algorithm Design Manual. Это потрясающая книга и действительно помогла мне понять алгоритмы и структуры данных.

2

Вам, вероятно, не понравится мой ответ, но я ожидаю, что самая продуктивная вещь, которую вы могли бы сделать, - это работать над вашим отношением. Вы часто находите то, что ищете. Поэтому, если вы относитесь к своему преподавателю как к субстандарту, а ваша книга бесполезна; вы получите очень мало. Если вы ищете сильные силы вашего инструктора и получите то, что вы можете в книге, вы пойдете далеко. Я просмотрел ваш текст, и мне показалось, что это не так расплывчато. Определенно посмотрите ссылки, приведенные в других ответах, но будьте позитивны и относительно класса.

+3

Уверенное отношение может быть проблемой, но у парня может также быть точка. Я помню свой первый класс структуры данных и алгоритмов (который вначале трудно понять). У моего учителя был очень сильный российский акцент и он дал нам задания, которые он использовал, чтобы дать студентам 4-5 лет более продвинутых в своих исследованиях CS, как и мы. Было больно. Я учился в книгах и сверстниках в этом семестре, а не учителем. –

+0

Я определенно вижу вашу точку зрения. Я, как правило, не один, чтобы обвинить меня в том, что я делаю в классе у преподавателя, но просто потому, что этот вопрос требует большого объема углубленного объяснения, которое, по-моему, не делает мой профессор. Это часто оставляет меня и большую часть остального класса путают. – lessthanjacob

0

Я нашел слайды, расположенные по адресу: http://www.heppenstall.ca/academics/doc/242/, чтобы быть очень полезными. Они охватывают широкий спектр структур данных и элементарных алгоритмов и включают полезные снимки, которые помогают понять, что происходит.

Я понятия не имею, кто первым создал различные слайды или кто может поддерживать самую последнюю версию - они, похоже, нашли свой путь на многих серверах разных школ и доступны, по крайней мере, в форматах PDF и PPT.

1

Лично я всегда находил лучший способ узнать что-то, чтобы попытаться его построить. Является ли это алгоритмом, новым шаблоном проектирования или структурой данных, процесс создания этой вещи в коде всегда был таким, каким я научился лучше всего.

+0

Но что делать, если у меня нет опыта программирования? Я уже второй год занимаюсь Computer Science major, довольно хорошо владею C++ и C. Как вы думаете, я все еще смогу построить некоторые из этих вещей? – lessthanjacob

+0

@SkankinJake ... проверьте мою ссылку выше ... Я смог прочитать эту книгу без каких-либо трудностей только после семестра C++ ... и после прочтения я смог написать свои собственные реализации многих из STL-данных без особых трудностей. Не то, чтобы мои были лучше, чем STL (я все еще предлагаю вам использовать это, если имеются подходящие контейнеры), но просто говоря, вы поймете, как они работают. В книге большое внимание уделяется структурам данных по сравнению с алгоритмами, поэтому вам, возможно, придется найти другой дополнительный материал для этого конца. – Jason

+0

Я обязательно прочитаю это. Благодарю. – lessthanjacob

2

Мне особенно понравилась эта книга: Data Structures with C++ Using STL от Ford and Topp.

Они включают в себя довольно много исходного кода (все это можно загрузить с их сайта) и приятно направить читателя на тщательную реализацию множества структур данных, реализованных в STL, с помощью гальки и болтов, а также пару структур данных (например, графиков), которых нет в STL. Вы получите хорошее представление о внутренней структуре каждой структуры данных из более основных типов данных, а также достаточно общую ссылку, которая вам когда-либо понадобится для создания чего-то, у вас будет очень хорошее представление о том, как именно эти структуры данных могут быть созданы и составлены из более простых типов данных (в общем смысле ... т.е. эти идеи могут быть перенесены на любой другой язык) и как они должны применяться в реальных условиях.

Это не столько ссылка для самого STL, сколько эта ссылка на то, как были реализованы структуры данных в STL (хотя и в более упрощенной форме ... вам не придется беспокоиться о распределителях , и многие другие вспомогательные элементы в коде STL, которые могут сделать его немного трудным для чтения и понимания для новичка).

Надеется, что это помогает,

Джейсону

Смежные вопросы