Алгоритмы в [закрытом] C

Папка __pycache__ и файлы *.pyc совершенно не нужны разработчику. Чтобы скрыть эти файлы от просмотра проводника, нам нужно отредактировать файл settings.json для VSCode. Добавьте папку и файлы, как показано ниже:

"files.exclude": {
  ...
  ...
  "**/*.pyc": {"when": "$(basename).py"}, 
  "**/__pycache__": true,
  ...
  ...
}
6
задан Mateen Ulhaq 6 October 2011 в 06:21
поделиться

9 ответов

Алгоритмы не обязательно привязаны к конкретному языку, просто чтобы прояснить, поэтому любая книга алгоритмов будет работать отлично, если вы понимаете концепцию структуры данных / алгоритма.

Тем не менее, это кажется хорошим выбором: Алгоритмы на C . У меня есть эквивалент C ++ на моей полке.

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

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

13
ответ дан 8 December 2019 в 02:24
поделиться

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

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

5
ответ дан 8 December 2019 в 02:24
поделиться

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

Это называется «сопоставление с образцом», когда вы видите и решаете множество проблем, вы начинаете узнавать общие вещи и можете повторно использовать свои предыдущие знания.

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

2
ответ дан 8 December 2019 в 02:24
поделиться

Алгоритмы на C Седжвика - отличное место для начала исследования. Когда вы узнаете, какие алгоритмы доступны и каковы рабочие характеристики каждого из них, вы сможете увидеть, где использовать каждый из них.

4
ответ дан 8 December 2019 в 02:24
поделиться

Это моя коллекция алгоритмов, в основном связанных с математикой:

Список алгоритмов

FXT (связанных с математикой)

Численные методы

Численные рецепты на C

4
ответ дан 8 December 2019 в 02:24
поделиться

Список алгоритмов Википедии также очень удобен.
И, если вы хотите узнать больше - Искусство компьютерного программирования ( ссылка на википедию ).
Желательно после того, как книга Роберта Седжвика уже упоминалась в нескольких ответах.

1
ответ дан 8 December 2019 в 02:24
поделиться

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

Что касается того, как узнать, какой алгоритм использовать и когда?

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

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

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

  • По мере продвижения стоит реализовывать некоторые вещи более чем одним способом, чтобы узнать, что работает, а что нет.

2
ответ дан 8 December 2019 в 02:24
поделиться

Поддержка файлов .NET выполняется достаточно быстро (сравнимо с собственными функциями Win32). Несколько вариантов, которые могут помочь вам повысить производительность:

  1. Если чтение / запись выполняется последовательно, помогите диспетчеру кеширования, применив соответствующую стратегию - предоставьте RandomAccess или SequentalScan ,
0
ответ дан 8 December 2019 в 02:24
поделиться

Для текста алгоритмов хорошее начало Кормена, Лейзерсона и Ривеста «Введение в алгоритмы» . Реализации псевдокода легко перевести на C. Два веб-ресурса со множеством ссылок на документацию об алгоритмах и примерах реализаций:

5
ответ дан 8 December 2019 в 02:24
поделиться
Другие вопросы по тегам:

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