Ар бир программисттин күчү анын бorминде. Ооба, Google'ду жакшы издөө жөндөмү да акыркы орунда эмес, бирок ошого карабастан, белгилүү бир бorм болушу керек, анын негизинде иштеп чыгуучунун ой жүгүртүүсү калыптанат. Бул бorм канчалык терең болсо, программист ошончолук кызыктуу чечимдерди таба алат. Мындай "базанын" бөлүктөрүнүн бири маалымат структуралары жана алгоритмдер. Бул багытта бorмиңизди кантип кеңейте аласыз? Вариант катары, китепти табыңыз, андан бorм отко чыдамдуу резерв жана андан ары изилдөө үчүн негиз болуп калат. Мен үчүн, мындай китеп Роберт Laforet тарабынан "Java маалымат структуралары жана алгоритмдер" болгон .
Ким үчүн
Бул китептин аудиториясы адамдардын абдан кеңири чөйрөсү болушу мүмкүн, анткени ал Java тorнин синтаксисин жаңыдан өздөштүргөндөр үчүн да , практикалык программисттер үчүн да, маалымат структураларынын жана алгоритмдердин өзгөчөлүктөрүн тереңирээк түшүнүү үчүн пайдалуу болот. .Эмне жонундо
Бул китеп программалоодо маалымат структураларын жана алгоритмдерди изилдөөгө жана колдонууга арналган. Бул окурманга маалымат структуралары маалыматтардын эстутумда уюштурулуш жолун кантип аныктаарын жана алгоритмдер бул структураларда ар кандай операцияларды кантип аткарарын үйрөтөт. Келгиле, бир аз тереңирээк казып көрөлү жана бул китеп эмне жөнүндө экенин карап көрөлү:- Массивдер. Массивдерде жана иреттелген массивдерде киргизүү, издөө жана жок кылуу операциялары кеңири камтылган. Тартиптүү жана иретсиз массивдерди сызыктуу жана бинардык издөөнүн иштешин көрсөтөт. Сиз ошондой эле O-синтаксиси эмне экенин биле аласыз.
- Сорттоо. Үч жөнөкөй сорттоо ыкмасы каралат: “көбүктү сорттоо”, “тандоо сорттоо”, “киргизүү сорттоо”. Китептен сиз кайсынысы эң жай, кайсынысы эң жөнөкөй экенин билесиз.
- Стектер жана кезектер. Стек, кезек жана артыкчылык кезеги сыяктуу маалымат структуралары, алардын эффективдүүлүгү жана Javaда ишке ашыруу каралат.
- Байланышкан тизмелер. Китепте кош байланышкан жана эки багыттуу тизмелер, алардын эффективдүүлүгү жана киргизүү, издөө жана жок кылуу операциялары кандай аткарылары жөнүндө сөз болот. Итераторлор жана алар кандай ыкмаларды талап кылаары да камтылган.
- Рекурсиялар. Рекурсиялар ар кандай кырдаалдарда каралат, мисалы: үч бурчтук сандарды жана факториалдарды эсептөө, анаграммаларды куруу, рекурсивдүү бинардык издөөнү аткаруу, Ханой мунарасы баш катырмасын чечүү, бириктирүү сортторун ишке ашыруу, сумка маселесин чечүү.
- Нетривиалдуу сорттоо. Өркүндөтүлгөн ыкмалар каралат: Shell сорттоо, тез сорттоо жана радикалдуу сорттоо, алардын алгоритмдери, эффективдүүлүгү.
- Бинардык дарактар. Балансталган бинардык издөө дарактары каралат, алар кантип иштешет, аларды киргизүү жана жок кылуу операциялары, өтүүнүн ар кандай түрлөрү, минимум жана максимум издөө, мураскерди издөө. Хаффман codeекси да камтылган.
- Кызыл жана кара дарактар. Биз салмактуу бак-дарактардын эң эффективдүү сортторун, алардын айлануу жана түсүн алмаштыруу операцияларын баланстоо үчүн зарыл деп эсептейбиз.
- Дарактар 2-3-4. Бул типтеги дарактар көп жолдуу дарактардын мисалы катары сүрөттөлөт, алардын иштеши жана тышкы маалыматтарды сактоо үчүн колдонулган В-дарактар менен байланышы талкууланат.
- Хеш tableлары. Хешинг жана анын ар кандай ыкмалары, мисалы, сызыктуу жана квадраттык orктөө, кош хэширлөө жана чынжырлоо ыкмасы камтылган. Сиз ошондой эле тышкы файл сактагычын уюштуруу үчүн хэшингди кантип колдонсо болорун биле аласыз.
- Пирамидалар. Бул артыкчылыктуу кезектерди натыйжалуу ишке ашыруу үчүн колдонулган дарактын өзгөчө түрү. Китепте киргизүү, жок кылуу жана кайра уюштуруу механизмдери талкууланат. Сиз ошондой эле пирамидалык алмаштыруу деген эмне экенин жана аны Javaда кантип ишке ашырууга болорун биле аласыз.
- Графиктер. Салмактуу жана салмаксыз графиктер, алар аркылуу издөө алгоритмдери жана эң кыска өтүү жолдорун табуу үчүн колдонулган алгоритмдер берилген.
Семинар колдонмолору деген эмне
Семинар колдонмолору бул структураларды жана алгоритмдерди көрсөтүү үчүн колдонулат . Тиркемелер браузерде иштей турган Java апплеттери катары иштелип чыккан. Семинардын тиркемелери алгоритмдин же маалымат структурасынын кантип иштээрин көрсөткөн графикалык диаграммаларды түзөт. Мисалы, өсүү тартибинде иреттелген мамычаларды көрсөтүү үчүн иштелип чыккан бир тиркемеде гистограммадагы баскычты басканда, кийинки кадам аткарылат. Бул учурда, бул алгоритмге катышкан өзгөрмөлөрдүн маанилери көрсөтүлөт, ошондуктан сиз codeдун кандайча аткарылып жатканын көрө аласыз (дебггердин сүрөттөмөсүн эске салат , туурабы?).Workshop кантип жүктөө жана орнотуу керек
- Аплеттерди бул жерден жүктөп алсаңыз болот .
- WorkshopApplets.ZIP чыкылдатып , архивди апплет менен жүктөп алыңыз.
- Апплеттерди түшүнүү үчүн бул теманы жана ага комментарийлерди окусаңыз болот .
Китептин жакшы жактары
- окууга абдан жеңил, көптөгөн мисалдар дээрлик "бармактарыңызда" түшүндүрүлөт;
- татаал математикалык формулаларды колдонбостон, көптөгөн "классикалык" нерселерге көзүңүздү ачат. Ооба, дээрлик аларсыз :)
- Мисалдар Java тorнде болсо да, codeдо болгон иш-аракеттер төмөнкү текст жана codeдогу комментарийлер менен кеңири түшүндүрүлөт. Ошондуктан, аны каалаган программалоо тorнин колдонуучусу окуй алат, анткени code мисалдары абдан жөнөкөй: алар дээрлик псевдоcode сыяктуу окушат.
Китептин терс жактары
- «Бармактарда» деген түшүндүрмөлөргө карабастан, анда боштуктар бар. Массивди сорттоону түшүндүрүү үчүн автор футбол командасынын сүрөтүн тартат, бирок Shell сорттоо ал жерде дээрлик сүрөттөлбөйт: мен аны түшүнө албай, интернеттен окуй албадым;
- Адатта сүрөттөрдө же tableларда каталар болушу мүмкүн;
- кээ бир code абдан эскирген.
Аналогдор
Мен бул китептин аналогдорун же андан кийинкилерди сунуштайм (окууну улантууну каалагандар үчүн):- Роберт Седгвик тарабынан «Явадагы алгоритмдер»;
- Томас Кормендин "Алгоритмдер: куруу жана анализи".
GO TO FULL VERSION