ebook img

Computer Science для программиста-самоучки. Все, что нужно знать о структурах данных и алгоритмах PDF

240 Pages·2023·3.136 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Computer Science для программиста-самоучки. Все, что нужно знать о структурах данных и алгоритмах

Кори Альтхофф Computer Science для программиста-самоучки Все, что нужно знать о структурах данных и алгоритмах 2023 Кори Альтхофф Computer Science для программиста-самоучки Все, что нужно знать о структурах данных и алгоритмах 2023 ББК 32.973.2-018 УДК 004.422.63 А58 Альтхофф Кори А58 Computer Science для программиста-самоучки. Все, что нужно знать о струк- турах данных и алгоритмах. — СПб.: Питер, 2023. — 240 с.: ил. — (Серия «Библиотека программиста»). ISBN 978-5-4461-2010-9 Книги Кори Альтхоффа вдохновили сотни тысяч людей на самостоятельное изучение про- граммирования. Чтобы стать профи в программировании, не обязательно иметь диплом в области computer science, и личный опыт Кори подтверждает это: он стал разработчиком ПО в eBay и добился этого самостоятельно. Познакомьтесь с наиболее важными темами computer science, в которых должен разбираться каждый программист-самоучка, мечтающий о выдающейся карьере, — это структуры данных и алгоритмы. «Computer Science для программиста-самоучки» поможет вам пройти техническое интервью, без которого нельзя получить работу в «айти». Книга написана для абсолютных новичков, поэтому у вас не должно возникнуть трудностей, даже если ранее ничего не слышали о computer science. 16+ (В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.) ББК 32.973.2-018 УДК 004.422.63 Права на издание получены по соглашению с John Wiley & Sons, Inc. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав. Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги. Издательство не несет ответственности за доступ- ность материалов, ссылки на которые вы можете найти в этой книге. На момент подготовки книги к изданию все ссылки на интернет-ресурсы были действующими. ISBN 978-1119724414 англ. © 2022 by John Wiley & Sons, Inc. All rights reserved. ISBN 978-5-4461-2010-9 © Перевод на русский язык ООО «Прогресс книга», 2022 © Издание на русском языке, оформление ООО «Прогресс книга», 2022 © Серия «Библиотека программиста», 2022 Краткое содержание Об авторе ..............................................................................................................................................12 О научном редакторе ...................................................................................................................12 Благодарности ...................................................................................................................................13 От издательства ................................................................................................................................14 Введение ...............................................................................................................................................15 I Введение в алгоритмы ................................................................................................25 1 Что такое алгоритм.................................................................................................................26 2 Рекурсия ........................................................................................................................................45 3 Поисковые алгоритмы .........................................................................................................51 4 Алгоритмы сортировки .......................................................................................................64 5 Строковые алгоритмы ..........................................................................................................85 6 Математика ..................................................................................................................................94 7 Вдохновение самоучки: Маргарет Гамильтон ...................................................111 II Структуры данных .......................................................................................................113 8 Что такое структуры данных .........................................................................................114 9 Массивы ......................................................................................................................................119 10 Связные списки .....................................................................................................................134 11 Стеки .............................................................................................................................................147 12 Очереди ......................................................................................................................................162 13 Хеш-таблицы ............................................................................................................................174 14 Двоичные деревья ..............................................................................................................184 15 Двоичные кучи .......................................................................................................................202 16 Графы ............................................................................................................................................213 17 Вдохновение самоучки: Илон Маск .........................................................................230 18 Дальнейшие шаги ................................................................................................................233 Оглавление Об авторе ..............................................................................................................................................12 О научном редакторе ...................................................................................................................12 Благодарности ...................................................................................................................................13 От издательства ................................................................................................................................14 Введение ...............................................................................................................................................15 Чему вы научитесь ......................................................................................................................17 Для кого эта книга .......................................................................................................................19 Истории успеха самоучек........................................................................................................20 Мэтт Мансон ...........................................................................................................................20 Тианни Майерс ......................................................................................................................21 Начало работы..............................................................................................................................22 Устанавливаем Python .......................................................................................................22 Устранение неполадок.......................................................................................................23 Практикумы ............................................................................................................................23 Не бросайте начатое ..................................................................................................................23 I Введение в алгоритмы ................................................................................................25 1 Что такое алгоритм.................................................................................................................26 Анализируем алгоритмы .........................................................................................................27 Постоянное время ......................................................................................................................32 Логарифмическое время .........................................................................................................33 Линейное время ..........................................................................................................................34 Линейно-логарифмическое время .....................................................................................35 Квадратичное время .................................................................................................................36 Кубическое время .......................................................................................................................38 Оглавление 7 Экспоненциальное время .......................................................................................................39 Сложность в лучшем и худшем случаях ...........................................................................40 Пространственная сложность ..............................................................................................41 Почему все это важно ...............................................................................................................42 Словарь терминов ......................................................................................................................42 Практикум ......................................................................................................................................44 2 Рекурсия ........................................................................................................................................45 Когда использовать рекурсию ..............................................................................................50 Словарь терминов ......................................................................................................................50 Практикум ......................................................................................................................................50 3 Поисковые алгоритмы .........................................................................................................51 Линейный поиск ..........................................................................................................................52 Когда следует использовать линейный поиск ..............................................................53 Двоичный поиск ..........................................................................................................................54 Когда следует использовать двоичный поиск ...............................................................57 Поиск символов ...........................................................................................................................60 Словарь терминов ......................................................................................................................62 Практикум ......................................................................................................................................63 4 Алгоритмы сортировки .......................................................................................................64 Пузырьковая сортировка ........................................................................................................65 Когда следует использовать пузырьковую сортировку ...........................................69 Сортировка вставками .............................................................................................................70 Когда следует использовать сортировку вставками ..................................................74 Сортировка слиянием ..............................................................................................................74 Когда следует использовать сортировку слиянием ...................................................81 Алгоритмы сортировки в Python .........................................................................................82 Словарь терминов ......................................................................................................................84 Практикум ......................................................................................................................................84 5 Строковые алгоритмы ..........................................................................................................85 Обнаружение анаграмм ...........................................................................................................85 Выявление палиндромов ........................................................................................................86 8 Оглавление Последняя цифра ........................................................................................................................87 Шифр Цезаря .................................................................................................................................89 Словарь терминов ......................................................................................................................92 Практикум ......................................................................................................................................93 6 Математика ..................................................................................................................................94 Двоичный код ...............................................................................................................................94 Побитовые операторы..............................................................................................................98 FizzBuzz .........................................................................................................................................102 Наибольший общий делитель ............................................................................................104 Алгоритм Евклида ....................................................................................................................107 Простые числа ...........................................................................................................................108 Словарь терминов ...................................................................................................................110 Практикум ...................................................................................................................................110 7 Вдохновение самоучки: Маргарет Гамильтон ...................................................111 II Структуры данных .......................................................................................................113 8 Что такое структуры данных .........................................................................................114 Словарь терминов ...................................................................................................................117 Практикум ...................................................................................................................................118 9 Массивы ......................................................................................................................................119 Производительность массива ............................................................................................121 Создание массива ....................................................................................................................123 Перемещение нулей ...............................................................................................................124 Объединение двух списков .................................................................................................127 Поиск дубликатов в списке .................................................................................................128 Поиск области пересечения двух списков ...................................................................130 Словарь терминов ...................................................................................................................132 Практикум ...................................................................................................................................133 Оглавление 9 10 Связные списки .....................................................................................................................134 Производительность связных списков ..........................................................................137 Создаем связные списки ......................................................................................................138 Поиск по связному списку ...................................................................................................141 Удаление узла из связного списка ...................................................................................142 Реверсия связного списка .............................................................................................143 Поиск цикла связного списка .............................................................................................144 Словарь терминов ...................................................................................................................145 Практикум ...................................................................................................................................146 11 Стеки .............................................................................................................................................147 Когда использовать стеки ....................................................................................................148 Создаем стек ...............................................................................................................................150 Использование стеков для реверсирования строк ................................................154 Минимальный стек ..................................................................................................................155 Помещенные в стек скобки .................................................................................................158 Словарь терминов ...................................................................................................................160 Практикум ...................................................................................................................................161 12 Очереди ......................................................................................................................................162 Когда использовать очереди ..............................................................................................163 Создаем очередь ......................................................................................................................165 Встроенный класс Queue .....................................................................................................170 Создаем очередь с помощью двух стеков ....................................................................171 Словарь терминов ...................................................................................................................172 Практикум ...................................................................................................................................173 13 Хеш-таблицы ............................................................................................................................174 Когда использовать хеш-таблицы ....................................................................................178 Символы в строке ....................................................................................................................179 Сумма двух ..................................................................................................................................181 Словарь терминов ...................................................................................................................183 Практикум ...................................................................................................................................183 10 Оглавление 14 Двоичные деревья ..............................................................................................................184 Когда использовать деревья ..............................................................................................188 Создаем двоичное дерево ...................................................................................................191 Обход дерева в ширину ........................................................................................................193 Другие обходы дерева ...........................................................................................................196 Инвертируем двоичное дерево ........................................................................................199 Словарь терминов ...................................................................................................................200 Практикум ...................................................................................................................................201 15 Двоичные кучи .......................................................................................................................202 Когда использовать кучи ......................................................................................................207 Создаем кучу ..............................................................................................................................208 Соединяем канаты с минимальными затратами .......................................................210 Словарь терминов ...................................................................................................................211 Практикум ...................................................................................................................................212 16 Графы ............................................................................................................................................213 Когда использовать графы ..................................................................................................218 Создаем граф .............................................................................................................................219 Алгоритм Дейкстры ................................................................................................................221 Словарь терминов ...................................................................................................................228 Практикум ...................................................................................................................................229 17 Вдохновение самоучки: Илон Маск .........................................................................230 18 Дальнейшие шаги ................................................................................................................233 Что дальше? ................................................................................................................................233 Карьера фрилансера ..............................................................................................................234 Как попасть на собеседование ..........................................................................................235 Как подготовиться к техническому интервью ............................................................235 Дополнительные источники ...............................................................................................236 Заключительные размышления ........................................................................................237

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.