LINUX.ORG.RU

Базовые алгоритмы, которые нужно знать обязательно


0

0

Привет. Заинтересовался таким вопросом. Где бы можно было о них почитать (в интернете)? Желательно на доступном уровне и с возможностью применения в языках высого уровня (perl, php, python). А то чувствую, что ухожу в дебри, при этом упуская важные вещи.

anonymous
Ответ на: комментарий от anonymous

Ну в смысле есть и в переводе и в электронном варианте :)

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()

В сети много доступных для скачивания книг на английском.

Общие алгоритмы -- как в Кормене-Ривесте-Лайзерсоне. Плюс оптимизационные проблемы -- включая линейное программирование.

dilmah ★★★★★
()

Это как раз те алгоритмы, что описаны у Вирта, Кнута (искусство п.) и Ахо/Ульман/Хопкрофт.

smh ★★★
()
Ответ на: комментарий от smh

имхо Кнут слишком концентрируется на деталях. Это не плохо, отнюдь. В деталях часто скрывается вся соль. Но тем не менее имхо лучше читать книги типа Кормена et al -- там более высокая концентрация именно идей -- и от учебы будет больший результат за меньшее время.

dilmah ★★★★★
()
Ответ на: комментарий от Valeriy_Onuchin

> "Базовые алгоритмы" чего?

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

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

> Это как раз те алгоритмы, что описаны у Вирта, Кнута (искусство п.)

"Это как раз те" "Базовые алгоритмы, которые нужно НЕ знать обязательно" ... в стиле Виктории Бэкхэм, много раз "рассматривал картинки "
из этой книжки ("искусство п."), но ни разу не прочитал.

IMHO, не стоит париться над Кнутом ...

Valeriy_Onuchin ★★
()

Обычно, все базовые алгоритмы уже бывают реализованны в библиотеках( а, главное, еще и отлажены). Так что не стоит особо парится с сортировками всякими и пр.

На практике чаще всего встречаю работу с деревьями(=>рекурсией), большинство алгоритмов - линейные. SQL-запросы еще оптимизировать приходится. А оптимизировать нижний уровень не очень полезно бывает в большинстве случаев, гораздо эффективнее оптимизировать саму архитектуру( если это возможно;), взаимодействия компонентов и пр. Ибо есть такая теорема: "оптимизация неэффективного алгоритма не делает его эффективным".

brejnev
()
Ответ на: комментарий от brejnev

>Так что не стоит особо парится с сортировками всякими и пр.

>На практике чаще всего встречаю работу с деревьями...

Ну тогда стоИт начинать с предметной области, ибо например для уеб-программирования алгоритмов наверняка совсем не надо:) что не отменяет их полезности вообще.

anonymous
()

Не нужно все знать, надо быть просто умным человеком :)

Burbaka ★★
()

Для этого надо знать прежде всего математику. Изучение же алгоритмов можно начать с сортировки и работы с базовыми структурами типа деревьев и списков. Можно сразу ориентироваться на многотомник Кнута.

З.Ы. Оптимизация - это уже численные методы, и там нужны свои учебники и гораздо более глубокие познания в математике.

dave ★★★★★
()

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

У Герберта Шилдта есть любопытная книжка по C++ (названия не помню уже). Она как-бы про язык программирования и шаблоны, но там на достаточно простом уровне хорошо описаны разные методы сортировки, их сильные и слабые стороны. Также есть глава по хеш-функциям и деревьям. Сведения достаточны для применения на практике. Думаю, можно ориентироваться на подобную "научно-популярную" литературу :)

dave ★★★★★
()

Литературы полно, любого уровня сложности. Вот из того, что сам использую:

Для новичка, совсем просто - Шилдт, "Полный справочник по С". Подозреваю, что там тот же материал, что и в его справочнике по С++, о котором уже написали выше.

Посложнее - Хетфилд, Кирби, "Искусство программирования на С". Уже можно использовать в реальной работе.

Сложно - Седжвик, "Фундаментальные алгоритмы на С". Если нужно как-следует разобраться и замутить что-то нетривиальное.

shumer
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.