æ•°æ®ç»“构与算法是程åºè®¾è®¡çš„é‡è¦ç†è®ºå’ŒæŠ€æœ¯åŸºç¡€ï¼Œä¹Ÿæ˜¯è®¡ç®—æœºç±»ä¸“ä¸šçš„æ ¸å¿ƒè¯¾ç¨‹ã€‚ 当å‰å¸‚é¢ä¸Šã€Šæ•°æ®ç»“æž„ä¸Žç®—æ³•ã€‹çš„ç›¸å…³ä¹¦ç±æœ‰å¾ˆå¤šï¼Œä»Žè¯»è€…角度æ¥çœ‹ï¼Œä¸»è¦åˆ†ä¸ºä¸¤ç±»ï¼šç¬¬ä¸€ç±»åé‡ç†è®ºï¼Œä¹¦ä¸è®²è§£äº†è®¸å¤šæ•°å¦å…¬å¼åŠé«˜æ·±é𾿇‚的数å¦ç†è®ºï¼Œå¸¸å¸¸ä»¤è¯»è€…“知难而退â€ï¼›ç¬¬äºŒç±»åé‡è®¡ç®—机编程,但多数选择Cè¯è¨€ä½œä¸ºç¼–程è¯è¨€ã€‚从著作者角度æ¥çœ‹ï¼Œä¹Ÿæœ‰ä¸¤ç±»ï¼šä¸€ç±»æ˜¯å›½å†…çŸ¥åæ•™æŽˆå¦è€…编写的算法书ç±ï¼Œè¿™ç±»ä¹¦ç†è®ºæ‰Žå®žï¼ŒåŠŸåº•é›„åŽšï¼Œæ™®é作为高ç‰é™¢æ ¡è®¡ç®—机专业的教æï¼›å¦ä¸€ç±»æ˜¯å›½å¤–作者编著,国内译者翻译的书ç±ï¼Œè¿™ç±»ä¹¦ç±å†…容翔实,但是ä¸é€‚åˆä¸å›½äººçš„å¦ä¹ ä¹ æƒ¯ï¼Œè·Ÿå›½å†…è¯»è€…çš„å¦ä¹ 路线ä¸å¤ªç›¸åŒã€‚ èŒä¸šæœ¬ç§‘é™¢æ ¡é¢å‘èŒä¸šï¼Œå¼ºè°ƒæŠ€æœ¯ï¼Œçªå‡ºæŠ€èƒ½ã€‚虽然数æ®ç»“æž„ä¸Žç®—æ³•çš„ä¸æ–å‘展离ä¸å¼€é«˜æ·±çš„æ•°å¦ç†è®ºï¼Œä½†å¯¹äºŽåŸ¹å…»é«˜å±‚次技术技能型的软件开å‘äººæ‰æ¥è¯´ï¼Œæ˜Žç™½æ•°æ®ç»“构和算法的原ç†ï¼ŒæŽŒæ¡å…¶å®žçްæ¥éª¤å¹¶èƒ½ç”¨ä»£ç åŠ ä»¥å®žçŽ°ï¼Œæ¯”ç”¨é«˜æ·±çš„æ•°å¦å…¬å¼æŽ¨å¯¼ç®—法的底层逻辑更具有实用价值。鉴于æ¤ï¼Œç¼–者力图编写一本契åˆèŒä¸šæœ¬ç§‘é™¢æ ¡ç‰¹ç‚¹çš„æ•°æ®ç»“构和算法类书ç±ï¼Œä¹Ÿå¸Œæœ›å®ƒæ˜¯èƒ½è®©â€œæ–‡ç§‘生â€ä¹Ÿèƒ½å¦æ‡‚的数æ®ç»“构和算法类书ç±ã€‚ 本书结构清晰,è¯è¨€é€šä¿—æ˜“æ‡‚ã€‚æœ¬ä¹¦é€šè¿‡ç»˜åˆ¶ä¸¤ç™¾å¤šå¼ å›¾å½¢ï¼Œè®©è¯»è€…èƒ½å¤Ÿé€šè¿‡å›¾å½¢æ¸…æ™°ç›´è§‚åœ°ç†è§£æ•°æ®ç»“构的å˜å‚¨åŽŸç†å’Œç®—法的实现æ¥éª¤ï¼Œæ›´å®¹æ˜“ç†è§£å¹¶æŽŒæ¡å¤æ‚的算法。本书采用Javaè¯è¨€æ¥å®žçŽ°æ¡ˆä¾‹ä»£ç ,70多个案例注释清晰ã€ä»£ç 简æ´ï¼Œå…·æœ‰å¾ˆå¼ºçš„实践性。 æœ¬ä¹¦å…±æœ‰å…«ç« ï¼Œç»“åˆå®žé™…应用场景讲解,涵盖常用的数æ®ç»“构和算法的原ç†ã€ä»£ç 实现和应用场景。 第1ç« ä¸»è¦ä»‹ç»äº†ä»€ä¹ˆæ˜¯æ•°æ®ç»“构,什么是算法,è¦å¦ä¹ å®ƒä»¬çš„å“ªäº›æ ¸å¿ƒå†…å®¹ï¼Œä»¥åŠç®—æ³•çš„æ—¶é—´å¤æ‚åº¦å’Œç©ºé—´å¤æ‚度问题。é‡ç‚¹ä»‹ç»äº†ç®—法的大O夿‚度表示法。 第2ç« è¯¦ç»†è®²è§£äº†çº¿æ€§è¡¨ï¼ˆåŒ…æ‹¬æ•°ç»„ã€é“¾è¡¨ã€æ ˆã€é˜Ÿåˆ—ã€ä¸²ï¼‰çš„特点ã€å˜å‚¨åŽŸç†ä»¥åŠå¯¹è¿™äº›æ•°æ®ç»“构进行增ã€åˆ ã€æŸ¥ã€æ”¹æ“作的实现æ¥éª¤ã€‚é‡ç‚¹è®²è§£äº†å•å‘链表ã€åŒå‘链表ã€å•å‘循环链表的原ç†å’Œæ“作。通过å•å‘循环链表的原ç†è®²è§£äº†çº¦ç‘Ÿå¤«æ»äº¡æŠ½ç¾æ¸¸æˆçš„解题æ€è·¯ã€‚æœ¬ç« è¿˜è®²è§£äº†Javaè¯è¨€ä¸ArrayListå’ŒLinkedList的区别,逆波兰表达å¼åŠå››åˆ™è¿ç®—表达å¼çš„æ±‚解方法。 第3ç« è¯¦ç»†è®²è§£äº†éžçº¿æ€§æ•°æ®ç»“æž„â€”â€”äºŒå‰æ ‘ï¼ˆäºŒå‰æŸ¥æ‰¾æ ‘ã€å¹³è¡¡äºŒå‰æ ‘ã€AVLæ ‘ã€å“ˆå¤«æ›¼æ ‘ã€äºŒå‰å †ï¼‰ã€å¤šè·¯æ ‘(Bî€‘æ ‘ã€B+æ ‘ï¼‰ã€å›¾å’Œæ•£åˆ—表的å˜å‚¨åŽŸç†åŠå¯¹è¿™äº›æ•°æ®ç»“æž„è¿›è¡Œæ·»åŠ ã€åˆ 除ã€éåŽ†ç‰æ“作的实现æ¥éª¤ï¼Œä»¥åŠTopké—®é¢˜çš„æ±‚è§£åŠžæ³•ã€‚æœ¬ç« é‡ç‚¹åœ¨äºŽäºŒå‰æ ‘çš„é历ã€AVLæ ‘çš„æ—‹è½¬å†å¹³è¡¡ã€çº¢é»‘æ ‘çš„æž„å»ºå’Œæ—‹è½¬ã€äºŒå‰å †çš„调整,以åŠå“ˆå¤«æ›¼æ ‘çš„æž„å»ºã€‚æœ¬ç« è¿˜è®²è§£äº†å›¾çš„åŸºæœ¬ç†è®ºä»¥åŠAOEç½‘æ±‚å…³é”®è·¯å¾„çš„å®žçŽ°è¿‡ç¨‹ã€‚æœ¬ç« éš¾ç‚¹åœ¨äºŽå¯¹Bî€‘æ ‘å’Œ B+æ ‘çš„æ“作。 第4ç« è®²è§£äº†æ ¸å¿ƒçš„å‡ ç§ç®—法æ€ç»´â€”—递归ã€è´ªå¿ƒã€åˆ†æ²»ã€åЍæ€è§„划ã€å›žæº¯ã€‚分别讲解了å„ç§ç®—法æ€ç»´çš„ç»å…¸æ¡ˆä¾‹ï¼šé€’归求阶乘ã€é€’å½’æ±‚æ–æ³¢é‚£å¥‘数列ã€é€’归解决汉诺塔问题ã€éƒ¨åˆ†èƒŒåŒ…问题ã€å‡åˆ†çº¸ç‰Œé—®é¢˜ã€æ‹¼æŽ¥æ•°å—问题ã€åˆ†æ²»æ±‚n次幂问题ã€01背包问题ã€å…«çš‡åŽé—®é¢˜ã€èµ°è¿·å®«é—®é¢˜åŠéª‘å£«å‘¨æ¸¸æˆ–é©¬è¸æ£‹ç›˜é—®é¢˜ã€‚ 第5ç« è¯¦ç»†è®²è§£äº†å大排åºç®—法——冒泡排åºã€é€‰æ‹©æŽ’åºã€æ’入排åºã€å¿«é€ŸæŽ’åºã€å †æŽ’åºã€å¸Œå°”排åºã€å½’并排åºã€æ¡¶æŽ’åºã€è®¡æ•°æŽ’åºã€åŸºæ•°æŽ’åºã€‚用图示的方å¼ä¸€ä¸€é˜è¿°äº†æ¯ç§æŽ’åºç®—法的原ç†ã€å®žçްæ¥éª¤ä»¥åŠä»£ç 实现。 第6ç« è®²è§£äº†ä¸ƒå¤§æŸ¥æ‰¾ç®—æ³•â€”â€”çº¿æ€§æŸ¥æ‰¾ã€äºŒåˆ†æŸ¥æ‰¾ã€æ’å€¼æŸ¥æ‰¾ã€æ–波那契查找ã€å“ˆå¸ŒæŸ¥æ‰¾ã€åˆ†å—æŸ¥æ‰¾ã€æ ‘表查找。é‡ç‚¹ç”¨å›¾ç¤ºè®²è§£äº†é¡ºåºæŸ¥æ‰¾ã€äºŒåˆ†æŸ¥æ‰¾ã€æ’å€¼æŸ¥æ‰¾ã€æ–波那契查找的实现原ç†ã€å®žçްæ¥éª¤ä»¥åŠä»£ç 实现。 第7ç« è®²è§£äº†å››å¤§å—符串匹é…算法——暴力匹é…算法ã€KMP算法ã€BM算法ã€RK算法的实现原ç†ã€å®žçްæ¥éª¤ä»¥åŠä»£ç 实现。 第8ç« æ˜¯æœ‰å…³å›¾çš„ç®—æ³•ã€‚ä¸»è¦åŒ…括两个最çŸè·¯å¾„ç®—æ³•â€”â€”å¼—æ´›ä¼Šå¾·ç®—æ³•å’Œè¿ªæ°æ–¯ç‰¹æ‹‰ç®—法;两个求解最å°ç”Ÿæˆæ ‘çš„ç®—æ³•â€”â€”æ™®åˆ©å§†ç®—æ³•å’Œå…‹é²æ–¯å¡å°”算法。 本书包å«å¤§é‡å›¾å½¢ï¼Œç”¨å›¾ç¤ºçš„æ–¹å¼ç»†è‡´åœ°è®²è§£äº†é𾿇‚的算法问题。本书出版的åˆè¡·æ˜¯å¸Œæœ›ä¸ºèŒä¸šæ•™è‚²æœ¬ç§‘ã€èŒä¸šæ•™è‚²ä¸“ç§‘å¦ç”Ÿç¼–写一本轻æ¾å¦ä¹ æ•°æ®ç»“构和算法的辅助教æï¼Œä½†å¯¹æ‰€æœ‰è®¡ç®—机编程人员æ¥è¯´ä¾ç„¶å…·æœ‰å¾ˆå¼ºçš„å®žç”¨æ€§ã€‚åŒæ—¶ï¼Œå¯¹äºŽå‚åŠ 1+Xè¯ä¹¦åˆ¶åº¦ä¸‹ç›¸å…³èŒä¸šæŠ€èƒ½ç‰çº§è¯ä¹¦è€ƒè¯•的考生能æä¾›æœ‰æ•ˆçš„帮助,对于报考国家软件设计师,用æ¥å¤ä¹ å’Œè§£ç”æœ‰å…³æ•°æ®ç»“构和算法的考题éžå¸¸å…·æœ‰å‚考å¦ä¹ 价值。 本书引用了有关专业文献和资料,未在书ä¸ä¸€ä¸€æ³¨æ˜Žå‡ºå¤„,在æ¤å¯¹æœ‰å…³æ–‡çŒ®çš„作者表示感谢,é™äºŽç¼–者的ç†è®ºæ°´å¹³å’Œå®žè·µç»éªŒï¼Œä¹¦ä¸ç–æ¼ä¹‹å¤„在所难å…,æ³è¯·å¹¿å¤§è¯»è€…æ‰¹è¯„ã€æŒ‡æ£ã€‚ 编者 2022.5 æºä»£ç