ebook img

Computer Science: Основы программирования на Java, ООП, алгоритмы и структуры данных PDF

1074 Pages·2018·41.287 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: Основы программирования на Java, ООП, алгоритмы и структуры данных

Computer Science Ап Interdisciplinary Approach Robert Sedgewick Kevin Wayne Princeton University "� Addison-Wesley Bosto• Cno lumb•u Isn dianap• Noewli Yso r•k S anF ranci• sAmcsot erda• mС ареT own Duba•i L ondo• nM adri• dM ilan• Munic• hP ar•i Mso ntre• aTlo ron• tDoe lh• Mie xicoC ity SaoP aul• oS ydne• Hyo ngK ong• S eou• Sli ngap•o Traei p• eTio kyo РОБЕРТ СЕДЖВИК, КЕВИН УЭЙН COMPUTER SCIENCE ОСНОВЫ ПРОГРАММИРОВАНИЯ НА JAVA. ООП1 АЛГОРИТМЫ И СТРУКТУРЫ ДАННЫХ Санкт-Петербург • Москва • Екатеринбург· Воронеж Нижний Новгород • Ростов-на-Дону Самара· Минск 2018 ББК 32.973.2-018 УДКОО4.42 С28 Седжвик Р., Уэйн К. С28 Computer Science: основы nроrраммирования на Java, ООП, алгоритмы и струк­ туры данных. -СПб.: Питер, 2018. -1072 с.: ил. -(Серия «Классика computer science»). ISBN 978-5-496-02700-7 Преподаватели Принстонскогоу ниверситетаР оберr Седжвиик Ке винУ эйн создаулнии версальное введенви Cеo mputSecri enнcаeя зыкJеav a, которое идеальнпоо дходкиатк с тудентамт,а ки профес­ сионаламВ.ы начнетсе о сново,с воитсео временнкурсый объектно-ориентированпнроогоrр аммн­ рованu и перейдектко ен цеПЦЮ1м болевеы сокогоу ровш:ал горитмами структурам даннытхе,о рии вычислении айр хите�сrуре компьютеров. И главно-е всят еорuр ассматриваетнсапя р актическии яхр кипхр имерапхр:и кладнаям атема­ тика, физикаи биолоГИJ1,ч исловмыетео ды,в иэуал3аЦИ1и1 данныхс,и нтеззв укоаб,р аботкrар афики, финансовмооед елированиие м ногоед ругое. 16+ (В сото ветствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.) ББК 32.973.2-018 УДКОО4.42 Права на издание получены по соглашению с Addisoп-Wesley Loпgmaп. Все права защищены. Никакая часть данноiii книги не может быть воспроизведена а кaкoiii бы то ни было форме без письменного разрешения вла­ дельцев авторских прав. Информация, содержащаяся в данноiii книге, получена из источников, рассматриваемых издательством как на­ дежные. Тем не менее, имея в виду возможные челоееческие или технические ошибки, издательство не может гарантировать абсоnютную точность и полноту приводимых сеедениiii и не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 978-0134076423 анm. © 2017 Реагsоп Educatioп, lпс. ISBN 978-5-496-02700-7 ©Перевод на pyccкиiii язык ООО Издательство «Питер», 2018 © Издание на русском языке, оформление ООО Издательство «Питер», 2018 ©Серия «Кnассика computer scieпce», 2018 Краткое содержание Предисловие • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 1 6 Гnава 1. Основы проrраммировани• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •2 5 Гnава 2. Функции и модуnи • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 1 99 Гnава З. Объектно-ориентированное проrраммирование • • • • • • • • • • • • • • •3 26 Гnава 4. Аnrоритмы и струкrуры данных • • • • • • • • • • • • • • • • • • • • • • • • • • • • •4 79 Гnава 5. Теори• вычислений • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •6 87 Гnава 6. Вычислитеn1она• маwина • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •8 38 Гnава 7. Построение вычислите111оноrо устройства • • • • • • • • • • • • • • • • • • • •9 48 Эакп�очение • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •1 054 Гnоссарий • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 1 057 API . . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . . . . . . • . . . • • . . . . • • • • • .1 086 Оглавление Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 От научного редактора русского издания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 . От издательства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 . Глава 1. Основы проrраммирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 5 . 1 .1. Ваша первая программа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 . Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 . Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 . 1.2. Встроенные типы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 . Выводы 57 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Вопросы и ответы (строки) . . . 57 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Вопросы и ответы (целые числа) . . . . . 58 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Вопросы и ответы (числа с плавающей точкой) . . . . . . . . . . . . . . . . . . . . . . 60 . Вопросы и ответы (переменные и выражения) . . 61 . . . . . . . . . . . . . . . . . . . . . . Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 . 1.3. Условные переходы и циклы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 . Выводы . . . . 95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 . Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 . 1.4 . Массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 . Выводы . . . . . . . 131 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 . Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 . Упражнения повышенной сложности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 1.5. Ввод и вывод . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 . Выводы . . . . . . . . . 172 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 . Упражнения . . . . 174 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Упражнения повышенной сложности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 . Оглавление 7 1.6. Пример: случайный серфинг . . . .. .. . . . . . . .. .. . . . . . . . . .. . .. . . . . . . . . . 180 Выводы 195 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Упражнения . .. .... . . . .. . 196 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Упражнения повышенной сложности. . . . ... . 198 . . . . . . . . . . . . . . . . . . . . . . . . . Гпава 2.Ф ункции и модупи .... ......... ........... ........... ... . 199 2.1. Определение функций . . .. . . .. . . . . . .. .. . . . . . . . . . .. . . .. .. . . . . .. . .. 200 . Вопросы и ответы . . . . .. . . . . . . . .. . .. . . . . . . . .. . . . . . . .. . .. . . . . . . . . . . 224 Упражнения . . . . .. . . . . .. .. .. . . . . .. . .. . . . . . . .. . .. . . . . . . .. . .. .. . . . 225 . Упражнения повышенной сложности . . . . .. . . .. . . . . . .. . .. . . . . . . .. .. 228 . 2.2. Библиотеки и клиенты . . . . . 231 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Вопросы и ответы .. .. . .. . . . .. . . .. . . . . . . .. . . . . . . . . .. . . . . . . . . .. . .. 260 . Упражнения .. . . . . .. . . . .. . .. . . . . . . .. . . . .. . . .. .. . . . . . . . .. . . .. . . . . 260 . Упражнения повышенной сложности . . . . .. . . . . . . . . .. . . . . . . . . . .. . . . 263 . 2.3. Рекурсия .. . . .. . . .. . . . .. . . . .. . . . . . . .. . . . . . . . .. .. . . . . . . . .. .. .. . . . . 265 Выводы . ... ... ..... .. .. . . 292 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Вопросы и ответы .. . . . .. . . . . . . . . . .. . . .. . . . .. . . .. . . . . . . .. . . . . . . . . 293 . Упражнения . . .. . . . .. .. . . . . . .. . .. . . . . . .. . . .. . . . . . . . .. . . . . . .. . .. . 294 . Упражнения повышенной сложности . . . . . . .. . . . . . . . . .. .. . . . . . . . . . . 296 . 2.4. Пример: задача о протекании . .. . . . . . . .. .. . . . . . . .. .. . . . . . .. .. . .. . . . 300 Выводы . . . . .. . . . . . . . .. 318 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Вопросы и ответы . .. . . . . .. . . . . . . . . .. .. . . .. . . .. .. . . . . . . . . . . . .. . . . 321 . Упражнения . . . . .. . . . .. . . . . . .. . . . . .. . . .. .. . . . . .. .. . .. . . . . . . .. . .. 322 . Упражнения повышенной сложности . . . . . . . . . . .. . . . . .. . .. . .. . . . . . . 323 . Гпава З. Объектно-ориентированное программирование . . . . . . . . . . . • .. 326 3.1. Использование типов данных . . . .. . .. . . . . . . . . .. . . . . .. . .. . . . . . . .. . . 327 . Вопросы и ответы .. . . .. .. . . . . . .. . .. . . . . .. . . . . . . . .. . . . . .. . .. . . . . . . 365 Упражнения .. . . .. . .. . . . . .. . .. . . . . .. .. . .. . . .. . . . . . . . . .. . .. .. .. . .. 369 Упражнения повышенной сложности .. . . . . . . . .. .. . . . . . . .. . . . . . . . .. 372 . 3.2. Создание типов данных . . . .. . . . . .. .. . . . . .. . .. . . . . . .. . . . . . . .. . . . . . 375 . Вопросы и ответы .. . . . .. . . . . .. .. . . . . . . .. . . . .. . . . . . . .. . . . . .. .. .. . 409 . Упражнения . . . . .. . .. . . . .. .. . . . . . .. . . . . .. . . .. . . .. . . . . .. . . . . . . .. . 411 . Упражнения повышенной сложности . .. . .. . . .. . . . . .. . . . . . .. . . . . . . . 415 . 8 Оглавление 3.3. Проектирование типов данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 . Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 . Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 . Упражнения по проектированию типов данных . . . . . . . . . . . . . . . . . . . . . . 463 . Упражнения повышенной сложности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 . 3.4. Пример: моделирование задачи п тел . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 . Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 Упражнения . .. . . 477 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Упражнения повышенной сложности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 . Гnеве 4. Аnгоритмы и структуры денных . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 4.1. Быстродействие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 . Выводы 504 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 . Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 . Упражнения повышенной сложности . . . . 512 . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. Сортировка и поиск . . . . . . 515 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Выводы . . . . .. . 539 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 . Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542 . Упражнения повышенной сложности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 . 4.3. Стеки и очереди . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 . Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 . Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 . Упражнения для связных списков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 . Упражнения повышенной сложности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597 4.4. Таблицы символов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 . Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 . Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635 . Упражнения для бинарных деревьев . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 . Упражнения повышенной сложности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 4.5. Пример: феномен «тесного мира» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646 . Выводы . . . . .. . 676 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678 . Оmавление 9 Упражнения 679 . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . . . . . . . . . • . . . . . . . . . . . . . . Упражнения повышенной сложности . . . . . . . . . . . . . . . . . . . . . . . . 683 . . . . . • . Г11ава 5. Теория вычиспений . • . . . . . • • . . • • . • . . • • • • . • • • • • • . . • • . . . • • . 687 5.1. Формальные языки . . . . . . . . 690 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . Выводы 729 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730 . Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731 . . . . . . . . . . . . . . . . . . . • . Упражнения повышенной сложности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734 . 5.2. Машины Тьюринга . . . . . 737 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752 . Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752 . . . . . . . . . . . . . . . . . . . . . • Упражнения повышенной сложности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755 . 5.3. Универсальность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755 . Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767 . Упражнения повышенной сложности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768 . 5.4. Вычислимость 774 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Вопросы и ответы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787 . Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788 . Упражнения повышенной сложности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789 . 5.5. Вычислительная сложность . . 790 . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . . • . Главный вопрос . . . . . . . . . . . . . . . . . . . . . . . . . 809 . . . . . . . . . . . . . . . . . . . . . . . • . Вопросы и ответы 827 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829 . Упражнения повышенной сложности . . . . . . . . . . . . . 835 . . . . . . . . . . . . . . . . . • Г11ава 6. Вычис11ите11ьная маwина • • • • • • • . . . • • • • . • . • • . • • . • . • • • . . • • • 838 6.1. Представление информации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839 . Выводы 866 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . . . . . Вопросы и ответы 867 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • . Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 870 . Упражнения повышенной сложности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873 . 6.2. МашинаТОУ 874 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Вопросы и ответы . . 896 . . . • . . . . . . . . . . . . . . . • . . . . • . . . . . . . . . . • . . . . . . . . • . Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897 .

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.