[{"data":1,"prerenderedAt":5760},["ShallowReactive",2],{"blog-taxonomies":3,"blog-stats":507,"post-2024\u002F2024-07-26-数据结构复习其二":1083},[4,11,16,21,25,29,36,39,44,47,52,58,63,66,71,76,80,84,87,93,96,101,105,110,113,117,122,127,132,136,141,143,146,151,155,157,162,165,169,173,176,179,183,186,190,193,197,200,205,208,211,214,219,222,228,234,237,239,245,249,253,256,260,266,271,276,281,283,287,290,293,298,301,304,306,308,311,314,316,318,321,327,332,337,342,347,352,354,356,358,361,365,367,369,371,374,376,378,381,386,390,393,396,400,404,407,411,413,415,417,421,423,425,428,431,433,435,437,439,441,443,446,448,450,454,456,459,461,463,465,467,469,471,473,477,483,486,488,491,493,495,497,499,501,503,505],{"category":5,"tags":6},"笔记",[7,8,9,10],"QQ","插件","LiteLoader","美化",{"category":12,"tags":13},"其他",[14,15,10],"博客","IP签名",{"category":17,"tags":18},"杂谈",[19,20],"互联网","观点",{"category":5,"tags":22},[14,23,24],"GitHub","数据可视化",{"category":5,"tags":26},[14,27,28],"访问统计","不蒜子",{"category":30,"tags":31},"工具",[32,33,34,35],"Python","爬虫","选课脚本","广州大学",{"category":5,"tags":37},[38,5],"数学分析",{"category":40,"tags":41},"算法",[42,40,43],"数据结构","线性表",{"category":40,"tags":45},[42,46],"复习",{"category":5,"tags":48},[49,50,51],"高等代数","线性代数","知识点",{"category":5,"tags":53},[14,54,55,56,57],"Typora","PicGo","图床","Markdown",{"category":30,"tags":59},[60,61,62],"Jupyter","工具配置","中文",{"category":30,"tags":64},[65,61,10],"VSCode",{"category":30,"tags":67},[68,69,70,35],"路由器","OpenWrt","校园网",{"category":12,"tags":72},[73,74,75],"网络协议","Wireshark","DEVP2P",{"category":5,"tags":77},[73,74,78,79],"Lua","解码器",{"category":5,"tags":81},[82,5,83],"常微分方程","数学",{"category":5,"tags":85},[86,5,83],"概率论",{"category":30,"tags":88},[89,90,91,92],"Docker","WSL","Windows","磁盘清理",{"category":30,"tags":94},[32,33,95,35],"课程表",{"category":5,"tags":97},[14,98,99,100],"Hexo","Gitalk","评论系统",{"category":5,"tags":102},[14,103,98,104],"Obsidian","写作工具",{"category":12,"tags":106},[107,108,109],"课题研究","泊松分布","参数估计",{"category":12,"tags":111},[107,108,109,112],"组会",{"category":12,"tags":114},[109,115,108,116],"IM模型","统计学",{"category":17,"tags":118},[119,120,121],"软考","网络规划","信息系统项目管理",{"category":30,"tags":123},[124,125,126],"Arch Linux","AppImage","Linux",{"category":5,"tags":128},[129,130,131],"编程语言","计算机科学","内存管理",{"category":5,"tags":133},[134,135],"Canvas","前端",{"category":5,"tags":137},[14,138,139,140],"GitHub Actions","Vite","部署",{"category":5,"tags":142},[135],{"category":5,"tags":144},[135,145],"系统设计",{"category":5,"tags":147},[135,148,149,150],"安全","XSS","CSRF",{"category":152,"tags":153},"项目",[134,154],"PixiJS",{"category":152,"tags":156},null,{"category":40,"tags":158},[42,159,160,161],"栈","队列","JavaScript",{"category":40,"tags":163},[42,164,161],"哈希表",{"category":5,"tags":166},[167,161,168],"ES6","Set",{"category":40,"tags":170},[40,171,172],"动态规划","背包问题",{"category":40,"tags":174},[40,175],"滑动窗口",{"category":40,"tags":177},[42,178,161],"链表",{"category":40,"tags":180},[40,181,161,182],"ACM","面试",{"category":40,"tags":184},[40,161,185],"数据类型转换",{"category":40,"tags":187},[42,188,178,189],"顺序表","TypeScript",{"category":5,"tags":191},[135,154,134,192],"渲染",{"category":5,"tags":194},[135,195,134,196],"富文本编辑","wangEditor",{"category":40,"tags":198},[199,40,178],"力扣",{"category":5,"tags":201},[202,203,204,91],"DNS","加密","网络安全",{"category":5,"tags":206},[135,207],"Axios",{"category":5,"tags":209},[135,207,189,210],"接口封装",{"category":5,"tags":212},[135,213,145],"JWT",{"category":152,"tags":215},[134,216,217,154,218],"画布","React","项目开发",{"category":17,"tags":220},[221],"日志",{"category":5,"tags":223},[224,225,226,227],"Neo4j","图数据库","中心度分析","PageRank",{"category":12,"tags":229},[230,231,232,233],"论文","机器学习","随机森林","保险欺诈",{"category":5,"tags":235},[236],"人工智能",{"category":5,"tags":238},[231,40,32],{"category":12,"tags":240},[241,242,243,244],"共识算法","最长链","区块链","算法设计",{"category":5,"tags":246},[161,247,248,135],"闭包","作用域",{"category":5,"tags":250},[14,138,251,252],"RSS","自动化",{"category":30,"tags":254},[89,90,91,255],"安装",{"category":30,"tags":257},[258,91,259],"MSYS2","开发环境",{"category":5,"tags":261},[262,263,264,265],"团队协作","Git","Commit规范","代码审查",{"category":30,"tags":267},[268,269,270],"oh-my-posh","终端美化","CLI",{"category":5,"tags":272},[273,274,275],"上下文工程","Agent","RAG",{"category":5,"tags":277},[278,279,280],"前端工程化","技术选型","工程基建",{"category":5,"tags":282},[275],{"category":5,"tags":284},[285,286],"SDD","规格驱动开发",{"category":5,"tags":288},[289],"neovim",{"category":5,"tags":291},[292],"技术写作",{"category":5,"tags":294},[295,32,296,89,297],"FastAPI","后端","工程实践",{"category":152,"tags":299},[274,300],"Harness Engineering",{"category":5,"tags":302},[303],"RFC",{"category":152,"tags":305},[274,300,275],{"category":152,"tags":307},[274],{"category":40,"tags":309},[199,40,161,310],"两数之和",{"category":40,"tags":312},[199,40,161,313],"双指针",{"category":40,"tags":315},[199,40,161,178],{"category":40,"tags":317},[199,40,161,175],{"category":40,"tags":319},[199,40,161,320],"回溯",{"category":5,"tags":322},[323,324,325,326],"分布式处理与计算","Spark","Scala","RDD",{"category":5,"tags":328},[323,329,330,331],"线性回归","逻辑回归","监督学习",{"category":5,"tags":333},[323,334,335,336],"数值优化","牛顿法","收敛性",{"category":5,"tags":338},[323,339,340,341],"PCA","数据降维","正则化",{"category":5,"tags":343},[323,344,345,346],"聚类","层次聚类","K-Means",{"category":5,"tags":348},[323,349,350,351],"随机模拟","统计推断","EM算法",{"category":5,"tags":353},[24],{"category":5,"tags":355},[24],{"category":5,"tags":357},[24],{"category":40,"tags":359},[42,360],"图论",{"category":40,"tags":362},[42,363,364],"树","二叉树",{"category":40,"tags":366},[42,160],{"category":40,"tags":368},[42],{"category":40,"tags":370},[42,159],{"category":40,"tags":372},[42,40,373],"复杂度分析",{"category":40,"tags":375},[42,43,178],{"category":40,"tags":377},[42,43,188],{"category":40,"tags":379},[42,380],"基础概念",{"category":17,"tags":382},[383,384,385],"随记","照片","高中",{"category":17,"tags":387},[383,388,389],"团建","战地",{"category":17,"tags":391},[383,392],"生活",{"category":17,"tags":394},[383,395],"文学",{"category":17,"tags":397},[383,398,399],"SCP","模因",{"category":17,"tags":401},[383,402,403],"画集","艺术",{"category":17,"tags":405},[14,406,383],"写作",{"category":17,"tags":408},[383,409,410],"音乐","摇滚",{"category":17,"tags":412},[383,392],{"category":17,"tags":414},[383,409],{"category":17,"tags":416},[383,35,392],{"category":17,"tags":418},[383,419,420],"同人","手书",{"category":17,"tags":422},[383,392],{"category":17,"tags":424},[383,392],{"category":17,"tags":426},[383,427],"植物",{"category":17,"tags":429},[383,430],"读书",{"category":17,"tags":432},[383,392],{"category":17,"tags":434},[383,392],{"category":17,"tags":436},[383,392],{"category":17,"tags":438},[383,392],{"category":17,"tags":440},[383,392],{"category":17,"tags":442},[383,392],{"category":17,"tags":444},[14,445,383],"一周年",{"category":17,"tags":447},[383,392],{"category":17,"tags":449},[383,392],{"category":17,"tags":451},[35,452,453],"开源组织","SITE-193",{"category":17,"tags":455},[383,392],{"category":17,"tags":457},[383,458],"年末",{"category":17,"tags":460},[383,392],{"category":17,"tags":462},[383,392],{"category":17,"tags":464},[14,17],{"category":17,"tags":466},[383,392],{"category":17,"tags":468},[383,392],{"category":17,"tags":470},[383,392],{"category":17,"tags":472},[383,392],{"category":17,"tags":474},[383,475,476],"游戏","Control",{"category":30,"tags":478},[479,480,481,482],"Quadim","图像处理","四叉树","Rust",{"category":17,"tags":484},[14,485],"上线纪念",{"category":17,"tags":487},[383,395],{"category":30,"tags":489},[203,490],"测试",{"category":17,"tags":492},[383],{"category":17,"tags":494},[383,392],{"category":17,"tags":496},[383],{"category":5,"tags":498},[40],{"category":5,"tags":500},[40],{"category":5,"tags":502},[40],{"category":5,"tags":504},[40],{"category":5,"tags":506},[40],[508,512,516,520,524,528,532,536,540,544,548,552,556,560,564,568,572,576,579,583,587,590,594,598,602,606,610,614,618,622,626,630,634,638,642,646,650,654,658,662,666,670,674,678,682,686,690,694,698,702,706,710,714,718,722,726,730,734,738,742,746,750,754,758,762,766,770,774,778,782,786,790,794,798,801,805,809,813,817,821,825,829,833,837,841,845,849,853,857,861,865,869,873,877,881,885,889,893,897,901,904,907,911,915,919,923,927,930,934,938,942,946,950,954,957,961,965,969,973,977,981,984,988,992,996,1000,1004,1007,1011,1015,1019,1023,1027,1031,1035,1039,1043,1047,1051,1055,1059,1063,1067,1071,1075,1079],{"path":509,"words":510,"published":511,"date":156},"\u002Fposts\u002F2024\u002F2024-06-25-liteloaderqqnt",1296,"2024-06-25 11:03:08",{"path":513,"words":514,"published":515,"date":156},"\u002Fposts\u002F2024\u002F2024-06-26-ip签名",0,"2024-06-26 22:53:53",{"path":517,"words":518,"published":519,"date":156},"\u002Fposts\u002F2024\u002F2024-06-29-何加盐中文互联网正在加速崩塌",4853,"2024-06-29 00:47:13",{"path":521,"words":522,"published":523,"date":156},"\u002Fposts\u002F2024\u002F2024-07-12-github-chart",270,"2024-07-12 20:02:50",{"path":525,"words":526,"published":527,"date":156},"\u002Fposts\u002F2024\u002F2024-07-14-访客数统计",192,"2024-07-24 01:34:28",{"path":529,"words":530,"published":531,"date":156},"\u002Fposts\u002F2024\u002F2024-07-26-广大选课脚本",110,"2024-07-26 01:34:28",{"path":533,"words":534,"published":535,"date":156},"\u002Fposts\u002F2024\u002F2024-07-26-数学分析笔记其二",14,"2024-07-26 23:54:02",{"path":537,"words":538,"published":539,"date":156},"\u002Fposts\u002F2024\u002F2024-07-26-数据结构复习其二",12856,"2024-07-26 02:48:08",{"path":541,"words":542,"published":543,"date":156},"\u002Fposts\u002F2024\u002F2024-07-26-数据结构复习相关",32856,"2024-07-26 02:24:14",{"path":545,"words":546,"published":547,"date":156},"\u002Fposts\u002F2024\u002F2024-07-26-线性代数与空间解析几何知识点全汇总",6110,"2024-07-26 03:27:55",{"path":549,"words":550,"published":551,"date":156},"\u002Fposts\u002F2024\u002F2024-07-31-typora-picgo-兰空图床打造markdown写作环境",311,"2024-07-31 12:56:23",{"path":553,"words":554,"published":555,"date":156},"\u002Fposts\u002F2024\u002F2024-09-02-jupyter配置中文",441,"2024-09-02 23:49:05",{"path":557,"words":558,"published":559,"date":156},"\u002Fposts\u002F2024\u002F2024-09-02-自定义vscode背景图片",100,"2024-09-02 23:39:00",{"path":561,"words":562,"published":563,"date":156},"\u002Fposts\u002F2024\u002F2024-09-03-制作gzhu校园网路由器",1423,"2024-09-03 23:43:18",{"path":565,"words":566,"published":567,"date":156},"\u002Fposts\u002F2024\u002F2024-09-26-09-25-2024",136,"2024-09-26 00:49:26",{"path":569,"words":570,"published":571,"date":156},"\u002Fposts\u002F2024\u002F2024-11-04-创建一个网络包解码器分析devp2p协议",1943,"2024-11-04 16:45:19",{"path":573,"words":574,"published":575,"date":156},"\u002Fposts\u002F2024\u002F2025-03-09-2024一些笔记常微分",16,"2024-12-09 22:51:00",{"path":577,"words":574,"published":578,"date":156},"\u002Fposts\u002F2024\u002F2025-03-09-2024一些笔记概率论","2025-03-09 22:51:00",{"path":580,"words":581,"published":582,"date":156},"\u002Fposts\u002F2025\u002F2025-03-01-windows下释放docker占用的wsl空间",164,"2025-03-01 13:54:15",{"path":584,"words":585,"published":586,"date":156},"\u002Fposts\u002F2025\u002F2025-03-01-爬虫实战-爬取广州大学课程表",774,"2025-03-01 14:55:48",{"path":588,"words":530,"published":589,"date":156},"\u002Fposts\u002F2025\u002F2025-04-03-hexo集成gitalk的问题","2025-04-03 14:26:34",{"path":591,"words":592,"published":593,"date":156},"\u002Fposts\u002F2025\u002F2025-09-22-记一次配置obsidian配合hexo写博客",92,"2025-09-22 16:47:52",{"path":595,"words":596,"published":597,"date":156},"\u002Fposts\u002F2025\u002F2025-10-24-10-20课题",204,"2025-10-24 08:15:01",{"path":599,"words":600,"published":601,"date":156},"\u002Fposts\u002F2025\u002F2025-11-02-组会朝花夕拾",501,"2025-11-02 18:56:59",{"path":603,"words":604,"published":605,"date":156},"\u002Fposts\u002F2025\u002F2025-11-05-基于随机加权推断模型im的参数估计算法",481,"2025-11-05 20:51:41",{"path":607,"words":608,"published":609,"date":156},"\u002Fposts\u002F2025\u002F2025-11-09-关于软考高项网规",884,"2025-11-09 19:54:52",{"path":611,"words":612,"published":613,"date":156},"\u002Fposts\u002F2025\u002F2025-11-17-arch-linux运行appimage相关",365,"2025-11-17 09:59:59",{"path":615,"words":616,"published":617,"date":156},"\u002Fposts\u002F2025\u002F2025-11-19-相关概念",2058,"2025-11-19 11:06:20",{"path":619,"words":620,"published":621,"date":156},"\u002Fposts\u002F2025\u002F2025-11-21-web可视化实践canvas",6393,"2025-11-21 14:50:48",{"path":623,"words":624,"published":625,"date":156},"\u002Fposts\u002F2025\u002F2025-11-22-使用-github-actions-自动部署基于vite的项目到-github-pages",272,"2025-11-23 01:59:24",{"path":627,"words":628,"published":629,"date":156},"\u002Fposts\u002F2025\u002F2025-11-22-关于前端包管理器npmpnpmyarn和bun",4890,"2025-11-22 21:21:15",{"path":631,"words":632,"published":633,"date":156},"\u002Fposts\u002F2025\u002F2025-11-23-undo-redo-机制具体实现",7839,"2025-11-23 19:15:00",{"path":635,"words":636,"published":637,"date":156},"\u002Fposts\u002F2025\u002F2025-11-27-前端安全-关于xss与crsf",1866,"2025-11-28 02:05:25",{"path":639,"words":640,"published":641,"date":156},"\u002Fposts\u002F2025\u002F2025-12-05-现代协同-2d-画布编辑器pixijs-v8",4285,"2025-12-05 02:00:16",{"path":643,"words":644,"published":645,"date":156},"\u002Fposts\u002F2025\u002F2025-12-07-杂谈-课题组系统设计",3710,"2025-12-07 21:09:33",{"path":647,"words":648,"published":649,"date":156},"\u002Fposts\u002F2025\u002F2025-12-25-javascript中的数组方法与栈stack和队列queue的实现",474,"2025-11-29 16:58:15",{"path":651,"words":652,"published":653,"date":156},"\u002Fposts\u002F2025\u002F2025-12-25-关于javascript-实现哈希表",189,"2025-11-27 11:31:39",{"path":655,"words":656,"published":657,"date":156},"\u002Fposts\u002F2025\u002F2025-12-25-关于javascript的set方法",332,"2025-12-25 15:26:18",{"path":659,"words":660,"published":661,"date":156},"\u002Fposts\u002F2025\u002F2025-12-25-关于动态规划(背包问题为例)",1238,"2025-11-17 18:24:04",{"path":663,"words":664,"published":665,"date":156},"\u002Fposts\u002F2025\u002F2025-12-25-关于滑动窗口",712,"2025-11-20 15:04:40",{"path":667,"words":668,"published":669,"date":156},"\u002Fposts\u002F2025\u002F2025-12-25-关于链表(javascript)",500,"2025-11-25 13:00:48",{"path":671,"words":672,"published":673,"date":156},"\u002Fposts\u002F2025\u002F2025-12-25-面试算法acm模式构建构建输入输出模板",2051,"2025-12-25 23:09:45",{"path":675,"words":676,"published":677,"date":156},"\u002Fposts\u002F2025\u002F2025-12-26-javascript-数字数组字符串的处理",483,"2025-12-26 11:20:25",{"path":679,"words":680,"published":681,"date":156},"\u002Fposts\u002F2025\u002F2025-12-26-javascripttypescript-的顺序表链表实现",446,"2025-12-26 12:16:12",{"path":683,"words":684,"published":685,"date":156},"\u002Fposts\u002F2025\u002F2025-12-27-前端画布设计vol-1-实现基础yuan素渲染和状态控制",2136,"2025-12-28 01:23:08",{"path":687,"words":688,"published":689,"date":156},"\u002Fposts\u002F2025\u002F2025-12-27-前端画布设计vol-2-实现富文本编辑",1838,"2025-12-28 02:58:47",{"path":691,"words":692,"published":693,"date":156},"\u002Fposts\u002F2025\u002F2025-12-27-算法刷题-关于链表操作",2135,"2025-12-27 16:12:42",{"path":695,"words":696,"published":697,"date":156},"\u002Fposts\u002F2025\u002F2025-12-27-配置dnscrypt-proxy实现加密dns服务windows",1899,"2025-11-15 01:06:37",{"path":699,"words":700,"published":701,"date":156},"\u002Fposts\u002F2025\u002F2025-12-28-前端-关于网络请求xhrajaxfetchaxios",7788,"2025-10-28 15:48:46",{"path":703,"words":704,"published":705,"date":156},"\u002Fposts\u002F2025\u002F2025-12-28-前端-接口封装与请求规范axios为例",2373,"2025-12-29 01:01:18",{"path":707,"words":708,"published":709,"date":156},"\u002Fposts\u002F2025\u002F2025-12-28-前端-身份验证管理-基于-jwt-token-的实现",2709,"2025-11-23 22:04:41",{"path":711,"words":712,"published":713,"date":156},"\u002Fposts\u002F2025\u002F2025-12-29-记canvas画布项目开发",6254,"2025-12-29 04:52:15",{"path":715,"words":716,"published":717,"date":156},"\u002Fposts\u002F2025\u002Fabout-site",116,"2025-03-31 16:44:24",{"path":719,"words":720,"published":721,"date":156},"\u002Fposts\u002F2025\u002F使用neo4j图数据科学库gds进行中心度分析",143,"2025-04-02 23:37:24",{"path":723,"words":724,"published":725,"date":156},"\u002Fposts\u002F2026\u002F2026-01-03-论文实训草稿",10445,"2026-01-03 14:10:49",{"path":727,"words":728,"published":729,"date":156},"\u002Fposts\u002F2026\u002F2026-01-06-人工智能导论",11461,"2026-01-07 03:25:49",{"path":731,"words":732,"published":733,"date":156},"\u002Fposts\u002F2026\u002F2026-01-07-机器学习相关算法",82,"2026-01-08 02:28:13",{"path":735,"words":736,"published":737,"date":156},"\u002Fposts\u002F2026\u002F2026-01-16-关于低复杂度最长链共识算法设计",4466,"2026-01-16 10:33:23",{"path":739,"words":740,"published":741,"date":156},"\u002Fposts\u002F2026\u002F2026-01-19-杂记2026-01-19",5754,"2026-01-20 01:03:26",{"path":743,"words":744,"published":745,"date":156},"\u002Fposts\u002F2026\u002F2026-01-22-github-action-自动同步博客到-github-主页",1069,"2026-01-22 16:31:47",{"path":747,"words":748,"published":749,"date":156},"\u002Fposts\u002F2026\u002F2026-03-01-windows-wsl安装docker",257,"2026-03-01 20:55:31",{"path":751,"words":752,"published":753,"date":156},"\u002Fposts\u002F2026\u002F2026-03-14-关于-msys2",701,"2026-03-15 03:05:04",{"path":755,"words":756,"published":757,"date":156},"\u002Fposts\u002F2026\u002F2026-03-28-团队项目协作规范随记",2419,"2026-03-29 05:33:50",{"path":759,"words":760,"published":761,"date":156},"\u002Fposts\u002F2026\u002F2026-03-29-oh-my-posh配置分享",104,"2026-03-29 16:34:43",{"path":763,"words":764,"published":765,"date":156},"\u002Fposts\u002F2026\u002F2026-06-13-从上下文工程到-agent-harness-engineering",8840,"2026-06-13 21:06:20",{"path":767,"words":768,"published":769,"date":156},"\u002Fposts\u002F2026\u002F2026-07-13-简谈前端基建质量标准与ai友好建设",3814,"2026-07-13 21:06:20",{"path":771,"words":772,"published":773,"date":156},"\u002Fposts\u002F2026\u002F2026-07-15-agentic-rag-系统实践",13357,"2026-07-15 21:06:20",{"path":775,"words":776,"published":777,"date":156},"\u002Fposts\u002F2026\u002F2026-07-18-简谈sdd规范驱动开发-copy",4476,"2026-07-18 11:06:20",{"path":779,"words":780,"published":781,"date":156},"\u002Fposts\u002F2026\u002F2026-07-20-个人neovim配置分享",366,"2026-07-22 13:46:50",{"path":783,"words":784,"published":785,"date":156},"\u002Fposts\u002F2026\u002F2026-07-20-关于技术写作-设计文档",6763,"2026-07-20 13:46:50",{"path":787,"words":788,"published":789,"date":156},"\u002Fposts\u002F2026\u002F2026-07-29-fastapi-工程实践随记",3417,"2026-07-29 04:58:34",{"path":791,"words":792,"published":793,"date":156},"\u002Fposts\u002Frfc_agentic_project\u002F2026-06-19-rfc-liskin_code_agent",3563,"2026-06-19 15:18:20",{"path":795,"words":796,"published":797,"date":156},"\u002Fposts\u002Frfc_agentic_project\u002F2026-07-25-rfc-glushkov_ogas",13461,"2026-07-28 23:46:50",{"path":799,"words":800,"published":793,"date":156},"\u002Fposts\u002Frfc_agentic_project\u002F2026-08-03-adr-ogas-arkhiv",2698,{"path":802,"words":803,"published":804,"date":156},"\u002Fposts\u002Frfc_agentic_project\u002Frag\u002F2026-08-12-arkhiv_rag-vol-1",4366,"2026-08-12 15:18:20",{"path":806,"words":807,"published":808,"date":156},"\u002Fposts\u002Fleetcode\u002F2025-12-25-力扣百题速练javascripttypescriptvol-1",3108,"2025-12-25 13:57:08",{"path":810,"words":811,"published":812,"date":156},"\u002Fposts\u002Fleetcode\u002F2025-12-26-力扣百题速练javascripttypescriptvol-2",3185,"2025-12-26 13:57:08",{"path":814,"words":815,"published":816,"date":156},"\u002Fposts\u002Fleetcode\u002F2025-12-28-力扣百题速练javascripttypescriptvol-3",2533,"2025-12-29 02:15:44",{"path":818,"words":819,"published":820,"date":156},"\u002Fposts\u002Fleetcode\u002F2026-01-17-力扣百题速练javascripttypescriptvol-4",3024,"2026-01-17 22:53:01",{"path":822,"words":823,"published":824,"date":156},"\u002Fposts\u002Fleetcode\u002F2026-01-19-力扣百题速练javascripttypescriptvol-5",293,"2026-01-19 15:15:12",{"path":826,"words":827,"published":828,"date":156},"\u002Fposts\u002F分布式处理与计算\u002F分布式处理与计算spark系统与scala语言",4320,"2026-07-06 14:10:49",{"path":830,"words":831,"published":832,"date":156},"\u002Fposts\u002F分布式处理与计算\u002F分布式处理与计算分类与回归分析",2081,"2026-07-07 12:40:29",{"path":834,"words":835,"published":836,"date":156},"\u002Fposts\u002F分布式处理与计算\u002F分布式处理与计算数值优化方法",2182,"2026-07-07 13:50:29",{"path":838,"words":839,"published":840,"date":156},"\u002Fposts\u002F分布式处理与计算\u002F分布式处理与计算数据降维",1583,"2026-07-07 21:50:29",{"path":842,"words":843,"published":844,"date":156},"\u002Fposts\u002F分布式处理与计算\u002F分布式处理与计算聚类分析",1882,"2026-07-07 16:50:29",{"path":846,"words":847,"published":848,"date":156},"\u002Fposts\u002F分布式处理与计算\u002F分布式处理与计算随机模拟与统计推断",2433,"2026-07-06 22:40:29",{"path":850,"words":851,"published":852,"date":156},"\u002Fposts\u002F数据可视化\u002F2026-06-14-数据可视化-基本图像",10011,"2026-06-14 20:18:20",{"path":854,"words":855,"published":856,"date":156},"\u002Fposts\u002F数据可视化\u002F2026-06-14-数据可视化-概论",10030,"2026-06-14 15:18:20",{"path":858,"words":859,"published":860,"date":156},"\u002Fposts\u002F数据可视化\u002F2026-06-15-数据可视化-可视化库",2032,"2026-06-15 20:18:20",{"path":862,"words":863,"published":864,"date":156},"\u002Fposts\u002F数据结构\u002F2025-09-29-数据结构-图",5451,"2025-04-15 20:48:06",{"path":866,"words":867,"published":868,"date":156},"\u002Fposts\u002F数据结构\u002F2025-09-29-数据结构-树",4211,"2025-04-30 02:19:06",{"path":870,"words":871,"published":872,"date":156},"\u002Fposts\u002F数据结构\u002F2025-09-29-数据结构-队列",921,"2025-04-11 15:30:08",{"path":874,"words":875,"published":876,"date":156},"\u002Fposts\u002F数据结构\u002F关于数据结构的一些想法",456,"2025-04-04 19:13:49",{"path":878,"words":879,"published":880,"date":156},"\u002Fposts\u002F数据结构\u002F数据结构-栈",920,"2025-04-18 00:17:37",{"path":882,"words":883,"published":884,"date":156},"\u002Fposts\u002F数据结构\u002F数据结构-算法复杂度",2153,"2025-04-05 16:09:55",{"path":886,"words":887,"published":888,"date":156},"\u002Fposts\u002F数据结构\u002F数据结构-线性表链表",4572,"2025-04-06 00:24:40",{"path":890,"words":891,"published":892,"date":156},"\u002Fposts\u002F数据结构\u002F数据结构-线性表顺序表",4191,"2025-04-05 22:09:59",{"path":894,"words":895,"published":896,"date":156},"\u002Fposts\u002F数据结构\u002F数据结构-绪论",2881,"2025-04-05 11:31:22",{"path":898,"words":899,"published":156,"date":900},"\u002Fposts\u002F杂记\u002F2023-12-26-2023年12月26日",7,"2023-12-26 23:51:33",{"path":902,"words":899,"published":156,"date":903},"\u002Fposts\u002F杂记\u002F2024-01-01-2024团建","2024-01-01 01:51:27",{"path":905,"words":581,"published":156,"date":906},"\u002Fposts\u002F杂记\u002F2024-01-09-随记","2024-01-09 20:50:35",{"path":908,"words":909,"published":156,"date":910},"\u002Fposts\u002F杂记\u002F2024-03-12-花名",5275,"2024-03-12 16:04:23",{"path":912,"words":913,"published":156,"date":914},"\u002Fposts\u002F杂记\u002F2024-04-15-逆模因",1353,"2024-04-15 00:26:16",{"path":916,"words":917,"published":156,"date":918},"\u002Fposts\u002F杂记\u002F2024-05-03-艺作",27,"2024-05-03 00:01:00",{"path":920,"words":921,"published":156,"date":922},"\u002Fposts\u002F杂记\u002F2024-05-21-关于博客",1720,"2024-02-21 23:21:11",{"path":924,"words":925,"published":156,"date":926},"\u002Fposts\u002F杂记\u002F2024-06-20-dnvrc维克多崔专访-2023",2036,"2024-06-20 00:28:39",{"path":928,"words":760,"published":156,"date":929},"\u002Fposts\u002F杂记\u002F2024-06-25-6月25日随记","2024-06-25 12:46:36",{"path":931,"words":932,"published":156,"date":933},"\u002Fposts\u002F杂记\u002F2024-06-25-歌名-想見星星",148,"2024-06-25 22:47:59",{"path":935,"words":936,"published":156,"date":937},"\u002Fposts\u002F杂记\u002F2024-07-11-桂花岗",6,"2024-07-11 00:28:17",{"path":939,"words":940,"published":156,"date":941},"\u002Fposts\u002F杂记\u002F2024-07-15-rolling-bocci",9,"2024-07-15 21:25:56",{"path":943,"words":944,"published":156,"date":945},"\u002Fposts\u002F杂记\u002F2024-07-22-七月九日",34,"2024-07-09 17:54:23",{"path":947,"words":948,"published":156,"date":949},"\u002Fposts\u002F杂记\u002F2024-07-22-六月随记",1052,"2024-07-22 01:03:19",{"path":951,"words":952,"published":156,"date":953},"\u002Fposts\u002F杂记\u002F2024-07-22-石菖蒲",41,"2024-07-10 01:26:05",{"path":955,"words":514,"published":156,"date":956},"\u002Fposts\u002F杂记\u002F2024-07-23-新书","2024-07-23 01:05:49",{"path":958,"words":959,"published":156,"date":960},"\u002Fposts\u002F杂记\u002F2024-07-29-年前",74,"2024-07-29 23:59:07",{"path":962,"words":963,"published":156,"date":964},"\u002Fposts\u002F杂记\u002F2024-07-30-周边",138,"2024-07-30 02:03:23",{"path":966,"words":967,"published":156,"date":968},"\u002Fposts\u002F杂记\u002F2024-07-31-2024-7-31日",185,"2024-07-31 01:21:52",{"path":970,"words":971,"published":156,"date":972},"\u002Fposts\u002F杂记\u002F2024-08-02-八月",1710,"2024-08-30 00:31:02",{"path":974,"words":975,"published":156,"date":976},"\u002Fposts\u002F杂记\u002F2024-09-01-九月",1484,"2024-09-26 16:30:15",{"path":978,"words":979,"published":156,"date":980},"\u002Fposts\u002F杂记\u002F2024-09-08-2024年9月8日",97,"2024-09-08 13:59:36",{"path":982,"words":514,"published":156,"date":983},"\u002Fposts\u002F杂记\u002F2024-09-19-博客站的一周年","2024-09-18 23:36:24",{"path":985,"words":986,"published":156,"date":987},"\u002Fposts\u002F杂记\u002F2024-10-03-十月",1028,"2024-10-31 23:54:27",{"path":989,"words":990,"published":156,"date":991},"\u002Fposts\u002F杂记\u002F2024-11-04-十一月",2134,"2024-11-30 00:04:39",{"path":993,"words":994,"published":156,"date":995},"\u002Fposts\u002F杂记\u002F2024-11-10-gzhu-site-193",80,"2024-11-10 19:19:12",{"path":997,"words":998,"published":156,"date":999},"\u002Fposts\u002F杂记\u002F2024-12-01-十二月",455,"2024-12-30 23:13:47",{"path":1001,"words":1002,"published":156,"date":1003},"\u002Fposts\u002F杂记\u002F2024-12-21-年末",23,"2024-12-21 23:21:49",{"path":1005,"words":522,"published":156,"date":1006},"\u002Fposts\u002F杂记\u002F2025-01-30-一月","2025-01-30 23:44:41",{"path":1008,"words":1009,"published":156,"date":1010},"\u002Fposts\u002F杂记\u002F2025-03-01-二月",224,"2025-02-28 00:11:08",{"path":1012,"words":1013,"published":156,"date":1014},"\u002Fposts\u002F杂记\u002F2025-03-01-博客杂谈",344,"2025-03-01 16:03:18",{"path":1016,"words":1017,"published":156,"date":1018},"\u002Fposts\u002F杂记\u002F2025-03-05-三月",2090,"2025-03-05 19:17:28",{"path":1020,"words":1021,"published":156,"date":1022},"\u002Fposts\u002F杂记\u002F2025-07-10-七月",361,"2025-07-10 22:04:32",{"path":1024,"words":1025,"published":156,"date":1026},"\u002Fposts\u002F杂记\u002F2025-09-21-九月",781,"2025-09-21 20:53:37",{"path":1028,"words":1029,"published":156,"date":1030},"\u002Fposts\u002F杂记\u002F2025-10-09-十月",591,"2025-10-09 00:35:07",{"path":1032,"words":1033,"published":156,"date":1034},"\u002Fposts\u002F杂记\u002Fcontrol",13,"2023-09-25 13:03:59",{"path":1036,"words":1037,"published":156,"date":1038},"\u002Fposts\u002F杂记\u002Fquadim四叉树图像处理",1094,"2023-10-21 11:27:06",{"path":1040,"words":1041,"published":156,"date":1042},"\u002Fposts\u002F杂记\u002Fsuccess",24,"2023-09-22 15:59:07",{"path":1044,"words":1045,"published":156,"date":1046},"\u002Fposts\u002F杂记\u002F三光年",295,"2023-11-18 04:18:40",{"path":1048,"words":1049,"published":156,"date":1050},"\u002Fposts\u002F杂记\u002F加密测试",961,"2023-11-21 14:24:01",{"path":1052,"words":1053,"published":156,"date":1054},"\u002Fposts\u002F杂记\u002F啊啊啊啊啊啊啊",54,"2023-09-20 17:29:33",{"path":1056,"words":1057,"published":156,"date":1058},"\u002Fposts\u002F杂记\u002F杂谈",124,"2023-09-25 23:11:32",{"path":1060,"words":1061,"published":156,"date":1062},"\u002Fposts\u002F杂记\u002F艹",25,"2023-10-21 17:40:43",{"path":1064,"words":1065,"published":1066,"date":156},"\u002Fposts\u002F神经网络\u002F神经网络与深度学习卷积神经网络",3168,"2026-06-07 11:23:08",{"path":1068,"words":1069,"published":1070,"date":156},"\u002Fposts\u002F神经网络\u002F神经网络与深度学习循环神经网络",2348,"2026-06-07 11:33:08",{"path":1072,"words":1073,"published":1074,"date":156},"\u002Fposts\u002F神经网络\u002F神经网络与深度学习改进学习方法",3360,"2026-06-07 10:13:08",{"path":1076,"words":1077,"published":1078,"date":156},"\u002Fposts\u002F神经网络\u002F神经网络与深度学习深度生成模型",2727,"2026-06-07 11:43:08",{"path":1080,"words":1081,"published":1082,"date":156},"\u002Fposts\u002F神经网络\u002F神经网络与深度学习神经网络基础",3205,"2026-06-07 10:03:08",{"id":1084,"title":1085,"abbrlink":1086,"body":1087,"category":40,"cover":5748,"date":156,"description":5749,"extension":5750,"mathjax":5751,"meta":5752,"navigation":5751,"path":537,"published":539,"readingMinutes":5755,"seo":5756,"stem":5757,"sticky":156,"swiper_index":156,"tags":5758,"updated":156,"words":538,"__hash__":5759},"posts\u002Fposts\u002F2024\u002F2024-07-26-数据结构复习其二.md","数据结构复习其二","42108",{"type":1088,"value":1089,"toc":5538},"minimark",[1090,1096,1101,1105,1115,1118,1123,1136,1207,1211,1220,1224,1269,1273,1278,1285,1288,1291,1294,1297,1300,1303,1308,1312,1331,1338,1342,1347,1352,1356,1388,1392,1418,1422,1426,1430,1434,1438,1442,1446,1451,1464,1468,1502,1506,1512,1517,1520,1528,1532,1536,1540,1548,1552,1560,1566,1578,1582,1632,1638,1642,1689,1695,1699,1734,1740,1744,1748,1754,1758,1789,1794,1800,1804,1810,1814,1819,1823,1890,1896,1900,1940,1946,1950,1955,1960,1966,1970,1974,1979,1985,1989,1995,1999,2005,2010,2016,2020,2024,2074,2078,2105,2129,2142,2146,2150,2163,2167,2174,2180,2184,2190,2194,2200,2204,2210,2214,2227,2233,2237,2254,2260,2264,2272,2275,2281,2284,2290,2293,2299,2303,2306,2314,2320,2323,2329,2333,2337,2341,2345,2351,2355,2361,2364,2372,2378,2382,2390,2396,2400,2406,2410,2416,2420,2425,2429,2435,2438,2444,2447,2453,2459,2463,2466,2472,2475,2481,2485,2522,2526,2562,2585,2589,2593,2597,2616,2621,2625,2629,2651,2655,2689,2693,2721,2725,2737,2741,2795,2799,2803,2811,2816,2820,2833,2838,2842,2849,2854,2859,2863,2867,2872,2876,2881,2886,2891,2895,2951,2956,2962,2968,2971,2974,2986,2990,2997,3002,3012,3018,3022,3041,3045,3052,3057,3063,3067,3074,3079,3085,3089,3093,3099,3104,3110,3116,3125,3129,3133,3141,3147,3151,3168,3174,3178,3190,3196,3199,3204,3211,3217,3220,3225,3228,3231,3237,3241,3281,3285,3297,3303,3307,3315,3323,3327,3360,3365,3369,3375,3379,3385,3389,3394,3398,3406,3411,3416,3422,3426,3431,3450,3456,3460,3488,3491,3496,3499,3502,3507,3510,3514,3522,3525,3527,3532,3535,3539,3543,3549,3553,3559,3563,3569,3573,3581,3610,3614,3618,3621,3656,3660,3663,3695,3700,3704,3744,3748,3753,3757,3760,3771,3774,3777,3781,3894,3898,3904,3910,3914,3921,3927,3939,3943,3985,3991,3995,3999,4004,4008,4013,4018,4023,4028,4034,4038,4043,4047,4052,4057,4061,4065,4069,4076,4079,4086,4089,4108,4111,4116,4207,4278,4282,4287,4293,4297,4301,4307,4311,4317,4321,4327,4359,4363,4369,4373,4377,4383,4387,4393,4397,4401,4407,4411,4417,4423,4429,4435,4439,4445,4450,4456,4462,4465,4471,4475,4481,4485,4490,4496,4500,4504,4511,4516,4521,4525,4540,4544,4549,4553,4558,4562,4573,4577,4609,4614,4618,4622,4644,4647,4651,4666,4671,4675,4709,4714,4718,4723,4728,4732,4742,4746,4751,4755,4761,4765,4771,4775,4779,4819,4825,4830,4834,4880,4886,4891,4895,4899,4905,4909,4915,4921,4927,4931,4937,4941,4947,4953,4957,4960,5011,5014,5019,5024,5029,5034,5039,5049,5054,5059,5064,5069,5074,5079,5084,5089,5094,5098,5102,5108,5112,5116,5122,5126,5130,5162,5166,5172,5178,5182,5188,5192,5195,5223,5226,5232,5235,5241,5245,5248,5254,5258,5261,5267,5270,5276,5279,5285,5289,5292,5326,5329,5335,5341,5347,5350,5356,5360,5363,5369,5373,5376,5391,5394,5400,5403,5409,5413,5416,5442,5446,5450,5456,5462,5469,5475,5480,5486,5492,5495,5501,5505,5511,5515,5519,5527,5533,5536],[1091,1092,1093],"ul",{},[1094,1095],"li",{},[1097,1098,1100],"h3",{"id":1099},"算法线性表","——算法、线性表——",[1097,1102,1104],{"id":1103},"概念明晰随机存取顺序存取随机存储和顺序存储","概念明晰：随机存取、顺序存取、随机存储和顺序存储",[1106,1107,1108,1112],"blockquote",{},[1109,1110,1111],"p",{},"随机存取、顺序存取、随机存储和顺序存储这四个概念是完全不一样的，切不可将之混淆",[1109,1113,1114],{},"很多人包括我可能认为随机存取就是随机存储，顺序存取就是顺序存取，其实不是这样。",[1109,1116,1117],{},"下面完整的介绍一下这4个概念",[1119,1120,1122],"h5",{"id":1121},"_1存取结构","1、存取结构",[1119,1124,1126,1127,1131,1132,1135],{"id":1125},"分为随机存取和非随机存取又称顺序存取","分为",[1128,1129,1130],"code",{},"随机存取","和",[1128,1133,1134],{},"非随机存取","（又称顺序存取）",[1106,1137,1138,1164,1179,1189],{},[1109,1139,1140,1141,1143,1144,1147,1148,1152,1153,1159,1160,1163],{},"1、",[1128,1142,1130],{},"就是",[1128,1145,1146],{},"直接存取","，可以通过",[1149,1150,1151],"strong",{},"下标直接访问","的那种",[1154,1155,42],"a",{"href":1156,"rel":1157},"https:\u002F\u002Fso.csdn.net\u002Fso\u002Fsearch?q=%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84&spm=1001.2101.3001.7020",[1158],"nofollow","，与",[1149,1161,1162],{},"存储位置无关","。例如数组。",[1109,1165,1166,1143,1168,1171,1172,1159,1175,1178],{},[1128,1167,1134],{},[1128,1169,1170],{},"顺序存取","，不能通过下标访问了，只能",[1149,1173,1174],{},"按照存储顺序存取",[1149,1176,1177],{},"存储位置有关","，例如链表。",[1109,1180,1181,1182,1184,1185,1188],{},"2、",[1128,1183,1170],{},"就是存取第N个数据时，",[1149,1186,1187],{},"必须先访问","前（N-1）个数据 （list）;",[1109,1190,1191,1184,1193,1196,1197,1200,1201,1206],{},[1128,1192,1130],{},[1149,1194,1195],{},"不需要","访问前（N-1）个数据，",[1149,1198,1199],{},"直接","就可以对第N个",[1154,1202,1205],{"href":1203,"rel":1204},"https:\u002F\u002Fso.csdn.net\u002Fso\u002Fsearch?q=%E6%95%B0%E6%8D%AE%E6%93%8D%E4%BD%9C&spm=1001.2101.3001.7020",[1158],"数据操作"," （array）。",[1119,1208,1210],{"id":1209},"_2存储结构","2、存储结构",[1119,1212,1126,1214,1131,1217],{"id":1213},"分为顺序存储和随机存储",[1128,1215,1216],{},"顺序存储",[1128,1218,1219],{},"随机存储",[1119,1221,1223],{"id":1222},"_3顺序存储结构","3、顺序存储结构",[1106,1225,1226,1245,1252,1263],{},[1091,1227,1228],{},[1094,1229,1230,1231,1234,1235],{},"在计算机中用一组",[1149,1232,1233],{},"地址连续的存储单元","依次存储线性表的各个数据元素，称作线性表的顺序存储结构。",[1236,1237,1242],"pre",{"className":1238,"code":1240,"language":1241},[1239],"language-text","- 顺序存储结构是存储结构类型中的一种，该结构是把**逻辑上相邻的节点**存储在**物理位置上相邻的存储单元**中，结点之间的逻辑关系由存储单元的邻接关系来体现。\n- 由此得到的储结构为顺序存储结构，通常顺序存储结构是借助于计算机程序设计语言（例如c\u002Fc++）的数组来描述的。\n12\n","text",[1128,1243,1240],{"__ignoreMap":1244},"",[1109,1246,1247,1248,1251],{},"– ",[1149,1249,1250],{},"主要优点","：节省存储空间。",[1109,1253,1254,1255,1258,1259,1262],{},"因为分配给数据的存储单元全用存放结点的数据（不考虑c\u002Fc++语言中数组需指定大小的情况），结点之间的逻辑关系没有占用额外的存储空间。采用这种方法时，",[1149,1256,1257],{},"可实现对结点的随机存取","，即每一个结点对应一个序号，由该序号可以",[1149,1260,1261],{},"直接计算出来结点的存储地址","。",[1109,1264,1247,1265,1268],{},[1149,1266,1267],{},"主要缺点","：不便于修改，对结点的插入、删除运算时可能要移动一系列的结点。",[1119,1270,1272],{"id":1271},"_4随机存储结构","4、随机存储结构",[1106,1274,1275],{},[1109,1276,1277],{},"在计算机中用一组任意的存储单元存储线性表的数据元素（这组存储单元可以是连续的，也可以是不连续的）。它不要求逻辑上相邻的元素在物理位置上也相邻。因此它没有顺序存储结构所具有的弱点，但也同时失去了顺序表可随机存取的优点。",[1109,1279,1280,1281,1284],{},"--随机存储",[1149,1282,1283],{},"最典型的代表","为链式存储：",[1109,1286,1287],{},"链式存储结构特点",[1109,1289,1290],{},"1、比顺序存储结构的存储密度小 （每个节点都由数据域和指针域组成，所以相同空间内假设全存满的话顺序比链式存储更多）。",[1109,1292,1293],{},"2、逻辑上相邻的节点物理上不必相邻。",[1109,1295,1296],{},"3、插入、删除灵活 （不必移动节点，只要改变节点中的指针）。",[1109,1298,1299],{},"4、查找结点时链式存储要比顺序存储慢。",[1109,1301,1302],{},"5、每个结点是由数据域和指针域组成",[1304,1305,1307],"h4",{"id":1306},"一数据结构的概念","一、数据结构的概念",[1119,1309,1311],{"id":1310},"_1基本概念","1、基本概念:",[1106,1313,1314],{},[1091,1315,1316,1319,1322,1325,1328],{},[1094,1317,1318],{},"数据：描述客观事实的符号，是计算机中可以操作的对象，能被计算机识别，并输给计算机处理的符号集合。",[1094,1320,1321],{},"数据元素：是组成数据的、有一定意义的基本单位，在计算机中通常作为整体处理，也被成为记录。",[1094,1323,1324],{},"数据对象：是性质相同数据元素的集合，是数据的一个子集。",[1094,1326,1327],{},"数据项：一个数据元素可以由若干个数据项组成，数据项是数据不可分割的最小单位。",[1094,1329,1330],{},"数据结构：相互之间存在一种或者多种特定关系的数据元素的集合。可分为逻辑结构和物理结构。",[1109,1332,1333],{},[1334,1335],"img",{"alt":1336,"src":1337},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H2EEsw2b-1641217649127)(myReviewPicture\u002F数据结构的类别-16411800000834.jpg)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3f3aa801.png",[1119,1339,1341],{"id":1340},"_2算法","2、算法",[1343,1344,1346],"h6",{"id":1345},"_1概念","(1)概念",[1106,1348,1349],{},[1109,1350,1351],{},"解决特定问题的求解步骤的一种描述，它是指令的有限序列，其中的每条指令表示一个或多个操作。",[1343,1353,1355],{"id":1354},"_2重要特性","(2)重要特性：",[1106,1357,1358,1364,1370,1376,1382],{},[1109,1359,1360,1363],{},[1149,1361,1362],{},"①输入","：有零个输入或者多个输",[1109,1365,1366,1369],{},[1149,1367,1368],{},"②输出","：只有一个或者多个输出",[1109,1371,1372,1375],{},[1149,1373,1374],{},"③有穷性","：算法在执行有限个步骤时，会自动结束而不会陷入无限循环里面",[1109,1377,1378,1381],{},[1149,1379,1380],{},"④确定性","：算法的每一步都有确定的含义而不会出现二义性",[1109,1383,1384,1387],{},[1149,1385,1386],{},"⑤可行性","：算法的每一步都可以通过有限次数完成。",[1119,1389,1391],{"id":1390},"_3算法的评价标准好的算法应该考虑达到以下目标","3、算法的评价标准(“好”的算法应该考虑达到以下目标)",[1106,1393,1394,1400,1406,1412],{},[1109,1395,1396,1399],{},[1149,1397,1398],{},"①正确性","。算法能够正确地求解问题。",[1109,1401,1402,1405],{},[1149,1403,1404],{},"②可读性","。算法能具有良好的可读性，以帮助人们理解。",[1109,1407,1408,1411],{},[1149,1409,1410],{},"③健壮性","。输入非法数据时，算法能适当地做出反应或进行处理。而不会产生莫名其妙的输出结果。",[1109,1413,1414,1417],{},[1149,1415,1416],{},"④效率与低存储量需求","。效率指算法执行的时间，存储量需求是指算法执行过程中所需的最大存储空间。",[1119,1419,1421],{"id":1420},"_4算法的时空效率","4、算法的时空效率",[1343,1423,1425],{"id":1424},"_1时间复杂度","(1)时间复杂度",[1343,1427,1429],{"id":1428},"根据算法写成的程序在执行时耗费时间的长度记为tn-on","根据算法写成的程序在执行时耗费时间的长度，记为T(n) = O(n)",[1343,1431,1433],{"id":1432},"_2空间复杂度","(2)空间复杂度",[1343,1435,1437],{"id":1436},"根据算法写成的程序在执行时占用存储单元的长度记为sn","根据算法写成的程序在执行时占用存储单元的长度记为S(n)",[1343,1439,1441],{"id":1440},"_3语句频度","(3)语句频度",[1343,1443,1445],{"id":1444},"一个算法中的语句执行次数称为语句频度或时间频度记为tn","一个算法中的语句执行次数称为语句频度或时间频度，记为T(n)",[1106,1447,1448],{},[1109,1449,1450],{},"时间复杂度：时间复杂度实际上是一个函数，代表基本操作重复执行的次数，进而分析函数虽变量的变化来确定数量级，数量级用O表示，所以算法的时间复杂度为： T（n）=O（f（n））",[1106,1452,1453],{},[1109,1454,1455,1456,1459,1460,1463],{},"在一个算法存在最好、平均、最坏",[1149,1457,1458],{},"三种情况","，我们一般关注的是",[1149,1461,1462],{},"最坏情况","，原因是，最坏情况是任何输入实例在运行时间的上界，对于某些算法来说，最坏情况出现的比较频繁，从大体上来看，平均情况和最坏情况一样差。",[1343,1465,1467],{"id":1466},"_4一般on的计算方法","(4)一般O（n）的计算方法：",[1106,1469,1470,1477,1480,1495],{},[1109,1471,1472,1473,1476],{},"①用 1代替所有运行时间中出现的",[1149,1474,1475],{},"加法常数","；",[1109,1478,1479],{},"②在修改后的运行函数中**保留最高阶的项；",[1109,1481,1482,1483,1486,1487,1490,1491,1494],{},"③如果",[1149,1484,1485],{},"最高阶","的",[1149,1488,1489],{},"项系数不是1","，则",[1149,1492,1493],{},"去除","这个项系数。",[1109,1496,1497,1498,1501],{},"④ ",[1149,1499,1500],{},"递归算法","的时间复杂度为：递归总次数每次递归中基本操作执行的次数。",[1343,1503,1505],{"id":1504},"_5常见的时间复杂度有以下七种","(5)常见的时间复杂度有以下七种：",[1109,1507,1508],{},[1334,1509],{"alt":1510,"src":1511},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fChDxRHo-1641217649129)(myReviewPicture\u002F时间复杂度的比较-16411800195595.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3f3338b6.png",[1109,1513,1514],{},[1149,1515,1516],{},"① O（1）常数型；② O（log2N）对数型；③ O（N）线性型；④ O（Nlog2N）二维型；⑤ O（N^2)平方型；⑥ O（N^3)立方型；⑦ O（2^N）指数型。",[1109,1518,1519],{},"例如：",[1236,1521,1526],{"className":1522,"code":1524,"language":1525,"meta":1244},[1523],"language-c","i=1;①\nwhile (i\u003C=n)\n{\n    i=i*2; ②\n}\n解：语句1的频度是1,\n设语句2的频度是f(n),则：2^f(n)\u003C=n;f(n)\u003C=log2n\n取最大值f(n)= log2n, T(n)=O(log2n )\n12345678\n","c",[1128,1527,1524],{"__ignoreMap":1244},[1097,1529,1531],{"id":1530},"二线性表","二、线性表",[1304,1533,1535],{"id":1534},"_1顺序存储","1、顺序存储",[1119,1537,1539],{"id":1538},"_1结构体的定义","(1)结构体的定义",[1236,1541,1546],{"className":1542,"code":1544,"language":1545,"meta":1244},[1543],"language-c++","typedef int Position;\ntypedef struct LNode * PtrToLNode;\nstruct LNode\n{\n    ElmenetType Data[ MAXSIZE ];\n    Position Last;\n};\ntypedef PtrToLNode List;\n12345678\n","c++",[1128,1547,1544],{"__ignoreMap":1244},[1119,1549,1551],{"id":1550},"_2顺序表的初始化","(2)顺序表的初始化",[1106,1553,1554,1557],{},[1109,1555,1556],{},"1、构造一个空表",[1109,1558,1559],{},"2、动态分配表结构所需的存储空间，然后将表中Last指针置为-1 表示表中没有数据。",[1236,1561,1564],{"className":1562,"code":1563,"language":1545,"meta":1244},[1543],"List MakeEmpty()\n{\n    List L;\n    L = (List)malloc(sizeof(struct LNode));\n    L->Last = -1;   \u002F\u002FLast 置为-1 表示表中没有数据元素\n    Return L;\n}\n1234567\n",[1128,1565,1563],{"__ignoreMap":1244},[1091,1567,1568,1575],{},[1094,1569,1570,1571],{},"通过L我们可以访问相应线性表的内容。比如：下标为i 的元素：L->Data",[1572,1573,1574],"span",{},"i",[1094,1576,1577],{},"查询线性表的长度：L->Last+1;",[1119,1579,1581],{"id":1580},"_3顺序表的查找时间复杂度为on","(3)顺序表的查找(时间复杂度为O(n))",[1106,1583,1584,1591,1602],{},[1109,1585,1586,1587,1590],{},"在线性表中",[1149,1588,1589],{},"查找与给定值 X 相等","的数据元素。",[1109,1592,1593,1594,1597,1598,1601],{},"由于线性表的元素都",[1149,1595,1596],{},"存储在数组Data","中，所以这个查找的过程",[1149,1599,1600],{},"实际上就是在数组里顺序查找","：",[1091,1603,1604,1618],{},[1094,1605,1606,1607,1610,1611,1614,1615,1476],{},"从",[1149,1608,1609],{},"第 1 个元素 a1"," 起依次和 X 比较， 直到找到一个与 X ",[1149,1612,1613],{},"相等","的数据元素，返回它在顺序表中的",[1149,1616,1617],{},"存储下标",[1094,1619,1620,1621,1624,1625,1628,1629,1262],{},"或者",[1149,1622,1623],{},"查遍整个表","都",[1149,1626,1627],{},"没有找到","与 X 相等的元素，则返回错误信息 ",[1149,1630,1631],{},"ERROR",[1236,1633,1636],{"className":1634,"code":1635,"language":1545,"meta":1244},[1543],"#define ERROR -1  \u002F* 将错误信息 ERROR 的值定义为任一负数都可以 *\u002F\nPosition Find( List L, ElementType X )\n{\n    Position i = 0;\n    While( i \u003C= L->Last && L->Data[i] != X)\n        i++;\n    if( i > L->Last)\n        return ERROR;   \u002F* 如果没有找到，则返回错误信息 *\u002F\n    else\n        return i;   \u002F* 找到后返回的是存储位置 *\u002F\n}\n1234567891011\n",[1128,1637,1635],{"__ignoreMap":1244},[1119,1639,1641],{"id":1640},"_4顺序表的插入-时间复杂度为on","(4）顺序表的插入 (时间复杂度为O(n))",[1106,1643,1644,1651,1662],{},[1109,1645,1646,1647,1650],{},"在表的插入是指在表的第 i（1≤ i ≤ n + 1）个位序上",[1149,1648,1649],{},"插入一个值为 X 的新元素","（也可以理解为在第 i 个元素之前插入新的元素）",[1109,1652,1653,1654,1657,1658,1661],{},"插入后使得",[1149,1655,1656],{},"原来长度为 n"," 的序列，变为",[1149,1659,1660],{},"长度为 n+1","的序列（i = 1时插入序列的最前端，i = n+1 时插入序列的最后）",[1091,1663,1664,1674,1680],{},[1094,1665,1666,1667,1670,1671,1476],{},"将ai~an",[1149,1668,1669],{},"顺序向后","移动（移动次序是从 an 到ai)，",[1149,1672,1673],{},"为新元素让出位置",[1094,1675,1676,1677,1476],{},"将 X 放入空出的",[1149,1678,1679],{},"第 i 个位序",[1094,1681,1682,1685,1686,1262],{},[1149,1683,1684],{},"修改"," Last 指针（相当于修改表长）,使之指向",[1149,1687,1688],{},"最后一个元素",[1236,1690,1693],{"className":1691,"code":1692,"language":1545,"meta":1244},[1543],"bool Insert( List L, ElementType X, int i)\n{ \u002F* 在 L 的指定位序 i 前插入一个新元素 X； 位序 i 元素数组位置下标为 i-1 *\u002F\n    Postion j;\n    if(L->Last == MAXSIZE-1)\n    {\u002F* 表空间已满，不能插入 *\u002F\n        printf(\"表满！\\n\");\n        return false;\n    }\n\n    if( i\u003C1 || i > L->Last+2)\n    {\u002F* 检查插入位序的合法性：是否在 1~n+1； n为当前元素个数，即Last+1 *\u002F\n        printf（\"位序不合法！\\n\");\n        return false;\n    }\n\n    for( j = L->Last; j >= i-1; j--) \u002F*Last 指向序列最后元素an *\u002F\n        L->Data[j+1] = L->Data[j]; \u002F* 将位序为 i 及以后的元素顺序向后移动 *\u002F\n    L->Data[i-1] = X;   \u002F* Last 仍指向最后一个元素 *\u002F\n    L->Last++;\n    return true;\n}\n123456789101112131415161718192021\n",[1128,1694,1692],{"__ignoreMap":1244},[1119,1696,1698],{"id":1697},"_5顺序表的删除时间复杂度为on","(5)顺序表的删除（时间复杂度为O(n)）",[1106,1700,1701,1704],{},[1109,1702,1703],{},"将表中的位序为 i（1≤ i ≤ n + 1）的元素从线性表中去掉，删除后使原长度为 n 的数组元素序列,变为长度为 n-1 的序列",[1091,1705,1706,1727],{},[1094,1707,1708,1709,1712,1713,1716,1717,1720,1721,1723,1724,1726],{},"将a",[1572,1710,1711],{},"i+1","~a",[1572,1714,1715],{},"n"," ",[1149,1718,1719],{},"顺序向前移动"," ，a",[1572,1722,1574],{}," 元素被a",[1572,1725,1711],{},"覆盖；",[1094,1728,1729,1731,1732,1262],{},[1149,1730,1684],{}," Last 指针（相当于修改表长）使之仍指向",[1149,1733,1688],{},[1236,1735,1738],{"className":1736,"code":1737,"language":1545,"meta":1244},[1543],"bool Delete(List L, int i)\n{  \u002F*从 L 中删除指定位序 i 的元素，该元素数组下标为 i-1*\u002F\n    Position j;\n\n    if(i \u003C 1 || i > L->Last + 1)\u002F* 检查空表及删除位序的合法性*\u002F\n    {\n        printf(\"位序%d不存在元素\",i);\n        return false;\n    }\n\n    for( j = i; i \u003C= L->Last; j++)\n        L->Data[j-1] = L->Data[j];\u002F*将位序 i+1 及以后的元素顺序向前移动*\u002F\n    L->Last--;\u002F*Last 仍指向最后元素*\u002F\n    return true;\n}\n123456789101112131415\n",[1128,1739,1737],{"__ignoreMap":1244},[1304,1741,1743],{"id":1742},"_2链表存储","2、链表存储",[1343,1745,1747],{"id":1746},"_1结构体的定义时间复杂度为on","(1）结构体的定义（时间复杂度为O(n)）",[1236,1749,1752],{"className":1750,"code":1751,"language":1545,"meta":1244},[1543],"typedef struct LNode * PtrToLNode;\nstruct LNode\n{\n    ElementType Data;\n    PtrToLNode Next;\n};\ntypedef PtrToLNode Position; \u002F*这里的位置是结点的地址 *\u002F\ntypedef PreToLNode List;\n12345678\n",[1128,1753,1751],{"__ignoreMap":1244},[1343,1755,1757],{"id":1756},"_2求表长时间复杂度为on","(2)求表长（时间复杂度为O(n)）",[1106,1759,1760,1777],{},[1109,1761,1762,1763,1765,1766,1769,1770,1773,1774],{},"在",[1149,1764,1216],{},"中求表长是很容易的，",[1149,1767,1768],{},"直接返回 Last+1"," 就可以了。但在",[1149,1771,1772],{},"链式存储","中，需要将链表",[1149,1775,1776],{},"从头到尾遍历一遍",[1091,1778,1779,1786],{},[1094,1780,1781,1782,1785],{},"设一个",[1149,1783,1784],{},"移动指针p和计数器cnt","，初始化后，p从表的第 1 个结点开始逐步往后移，同时计数器 cnt+1.",[1094,1787,1788],{},"当后面不再有结点时，cnt 的值就是结点个数，即 表长。",[1109,1790,1791],{},[1334,1792],{"alt":1334,"src":1793},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3f3dea89.png",[1236,1795,1798],{"className":1796,"code":1797,"language":1545,"meta":1244},[1543],"int Length(List L)\n{\u002F\u002F默认该链表是有头结点的\n    Position p;\n    int i=0;  \u002F* 初始化计数器 *\u002F\n\n    \u002F\u002F单向链表的遍历(三部曲)\n    p = L->next; \u002F* p指向表的第 1 个结点 *\u002F\n    while(p)\n    { \u002F* 遍历单链表，统计结点数 *\u002F\n        p=p->next;\n        i++;\n    }\n    return i;\n}\n1234567891011121314\n",[1128,1799,1797],{"__ignoreMap":1244},[1343,1801,1803],{"id":1802},"_3判空","(3)判空",[1236,1805,1808],{"className":1806,"code":1807,"language":1545,"meta":1244},[1543],"int ListEmpty(LinkList L)\n{   \u002F\u002F若 L 为空，则返回1，否侧返回 0\n    if(L->Next) \u002F\u002F非空\n        return 0;\n    else\n        return 1;\n}\n1234567\n",[1128,1809,1807],{"__ignoreMap":1244},[1343,1811,1813],{"id":1812},"_4查找时间复杂度为on","(4)查找（时间复杂度为O(n)）",[1106,1815,1816],{},[1109,1817,1818],{},"有两种 按序号查找（FindKth）和 按值查找（Find）",[1343,1820,1822],{"id":1821},"按序号查找-findkth时间复杂度为on","①按序号查找 FindKth（时间复杂度为O(n)）",[1106,1824,1825,1838,1847],{},[1109,1826,1827,1828,1830,1831,1262],{},"对于",[1149,1829,1216],{},"，按序号查找是很直接的事情，要得到",[1149,1832,1833,1834,1837],{},"第 K 个元素的值，直接取L->Data",[1572,1835,1836],{},"K-1","即可",[1109,1839,1840,1841,1843,1844,1601],{},"但是对于",[1149,1842,1772],{},"则需要采用跟",[1149,1845,1846],{},"求表长类似的思路",[1091,1848,1849,1859,1880],{},[1094,1850,1851,1852,1855,1856,1476],{},"从链表的",[1149,1853,1854],{},"第 1 个元素","结点起，判断",[1149,1857,1858],{},"当前结点是否是第 K 个",[1094,1860,1861,1862,1490,1865,1868,1869,1872,1873,1876,1877,1262],{},"若",[1149,1863,1864],{},"是",[1149,1866,1867],{},"返回","该结点的值，",[1149,1870,1871],{},"否","则继续",[1149,1874,1875],{},"对比后一个","，直到",[1149,1878,1879],{},"表结束为止",[1094,1881,1882,1883,1886,1887,1262],{},"如果",[1149,1884,1885],{},"没有","第 K 个结点则返回",[1149,1888,1889],{},"错误信息",[1236,1891,1894],{"className":1892,"code":1893,"language":1545,"meta":1244},[1543],"#define ERROR -1 \u002F* 一般定义为表中元素不可能取到的值 *\u002F\n\nElementType FindKth(List L, int K)\n{   \u002F* 根据指定的位序 K， 返回 L 中相应的元素 *\u002F\n    Position P;\n    int cnt = 1; \u002F* 位序从 1 开始 *\u002F\n    p = L; \u002F* p 指向 L的第 1 个结点 *\u002F\n    while(p && cnt \u003C K)\n    {\n        p = p->next;\n        cnt++\n    }\n\n    if((cnt == K) && p)\n        return p->Data; \u002F* 返回第 K 个 *\u002F\n    else\n        return ERROR;   \u002F* 否则返回错误信息 *\u002F\n}\n123456789101112131415161718\n",[1128,1895,1893],{"__ignoreMap":1244},[1343,1897,1899],{"id":1898},"按值查找即定位-find时间复杂度为on","②按值查找，即定位 Find（时间复杂度为O(n)）",[1106,1901,1902,1905],{},[1109,1903,1904],{},"基本方法：也是从头到尾遍历，直到找到为止：",[1091,1906,1907,1914,1932],{},[1094,1908,1851,1909,1855,1911,1476],{},[1149,1910,1854],{},[1149,1912,1913],{},"当前结点的值是否等于 X",[1094,1915,1861,1916,1918,1919,1921,1922,1918,1925,1872,1927,1876,1929,1476],{},[1149,1917,1864],{},"，",[1149,1920,1867],{},"该结点的",[1149,1923,1924],{},"位置",[1149,1926,1871],{},[1149,1928,1875],{},[1149,1930,1931],{},"表结束位置为止",[1094,1933,1934,1937,1938,1262],{},[1149,1935,1936],{},"找不到","时返回",[1149,1939,1889],{},[1236,1941,1944],{"className":1942,"code":1943,"language":1545,"meta":1244},[1543],"#define ERROR NULL \u002F*空地址表示错误 *\u002F\n\nPosition Find( List L, ElementType X)\n{\n    Position p = L;\u002F* p指向 L 的第 1 个元素 *\u002F\n    while(p && p->Data != x)\n    {\n        p = p->Next;\n    }\n\n    if(p)\n         return p;\n    else\n        return ERROR;\n}\n123456789101112131415\n",[1128,1945,1943],{"__ignoreMap":1244},[1343,1947,1949],{"id":1948},"_5链表的插入时间复杂度为on","(5)链表的插入（时间复杂度为O(n)）",[1109,1951,1952],{},[1334,1953],{"alt":1334,"src":1954},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3f4967cd.png",[1109,1956,1957],{},[1334,1958],{"alt":1334,"src":1959},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3f4db83a.png",[1236,1961,1964],{"className":1962,"code":1963,"language":1545,"meta":1244},[1543],"int  ListInsert_L(LinkList &L, int i,ElementType e)\n{\n    p = L;\n    j = 0;\n    while(p&& j\u003Ci-1)\n    {\u002F\u002F寻找第 i-1 个结点\n        p = p->next;\n        ++=j;\n    }\n    if(!p || j > i-1)\n        return ERROR;\u002F\u002F\n    s = (LinkList)malloc(sizeof(LNode));\u002F\u002F生成新结点s\n    s->data = e;        \u002F\u002F将结点s 的数据域的值 更新为 e\n    s->next = p->next;  \u002F\u002F将结点s 插入 L 中\n    p->next = s;\n    return OK;\n}\n1234567891011121314151617\n",[1128,1965,1963],{"__ignoreMap":1244},[1343,1967,1969],{"id":1968},"_6创建链表时间复杂度为on","(6)创建链表（时间复杂度为O(n)）",[1343,1971,1973],{"id":1972},"_1带头结点的头插法时间复杂度为on","1、带头结点的【头插法】（时间复杂度为O(n)）",[1109,1975,1976],{},[1334,1977],{"alt":1334,"src":1978},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3f3db996.png",[1236,1980,1983],{"className":1981,"code":1982,"language":1525,"meta":1244},[1523],"\u002F* 带头结点的插入创建 *\u002F\nvoid createListHead( Linklist L, int n )\n{\n        \u002F\u002F建立头结点\n        L = (LNode*)malloc(sizeof(struct LNode));\n        L->Next = NULL;\n        \u002F\u002F建立单链表（头插法）\n        LNode *temp = NULL;\n        \u002F\u002F申请空间，写入数据\n        for(int i = 0; i \u003C n; i++)\n        {\n            tmp = (LNode*)malloc(sizeof(struct LNode)); \u002F* 申请、填装结点 *\u002F\n            scanf(\"%d\",&tmp->Data);\u002F\u002F输入元素值\n            \u002F\u002F插入到头结点的后面\n            tmp->Next = L->Next;\n            L->Next = tmp;\n        }\n}\n123456789101112131415161718\n",[1128,1984,1982],{"__ignoreMap":1244},[1343,1986,1988],{"id":1987},"_2带尾结点的插入尾插法时间复杂度为on","2、带尾结点的插入【尾插法】（时间复杂度为O(n)）",[1236,1990,1993],{"className":1991,"code":1992,"language":1525,"meta":1244},[1523],"\u002F*带尾结点的插入*\u002F\nvoid CreateList_L( Listlist &L, int n )\n{ \u002F\u002F正位序数输入 n 个元素的值，建立带表头结点的单链表L\n        \u002F\u002F建立头结点\n        L = (LNode*)malloc(sizeof(struct LNode));\n        L->Next = NULL;\n        \u002F\u002F建立单链表（尾插法）\n        LNode r = L; \u002F\u002F尾指针指向头结点\n        \u002F\u002F申请空间，写入数据\n        for(int i = 0;i \u003C n; i++)\n        {\n            LNode *tmp = (LNode*)malloc(sizeof(struct LNode)); \u002F* 申请新结点 *\u002F\n            scanf(\"%d\",&tmp->Data); \u002F\u002F输入元素\n            tmp->Next = NULL;\n            \u002F\u002F插入到尾结点后面\n            r->next = temp;\n            r = tmp;       \u002F\u002Fr指向新的尾结点\n        }\n}\n12345678910111213141516171819\n",[1128,1994,1992],{"__ignoreMap":1244},[1343,1996,1998],{"id":1997},"_7删除时间复杂度为on","(7)删除（时间复杂度为O(n)）",[1109,2000,2001],{},[1334,2002],{"alt":2003,"src":2004},"在这里插入图片描述","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3f6b05c3.png",[1109,2006,2007],{},[1334,2008],{"alt":1334,"src":2009},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3f75405a.png",[1236,2011,2014],{"className":2012,"code":2013,"language":1525,"meta":1244},[1523],"\u002F\u002F将线性表L 中第 i 个数据元素删除\nint ListDelete_L(LinkList &L, int i, ElementType &e)\n{\n    p=L;\n    int j=0;\n    while(p->next && j \u003C i-1)\n    {\u002F\u002F寻找第 i 个结点，并令p指向其前驱\n        p = p>next;\n        ++j;\n    }\n    if(!(p->next)||j \u003C i-1)\n        return ERROR;\u002F\u002F删除位置不合理\n\n    q = p->next;    \u002F\u002F临时保存被删除结点的地址以备释放\n    p->next = q->next; \u002F\u002F改变被除结点的驱结点的指针域\n    e = q->data;    \u002F\u002F保存被删除结点的数据域\n    free(q);        \u002F\u002F释放被删除结点的空间\n    return OK;\n}\n12345678910111213141516171819\n",[1128,2015,2013],{"__ignoreMap":1244},[1304,2017,2019],{"id":2018},"_3二者时间复杂度和优缺点的比较","3、二者时间复杂度和优缺点的比较",[1119,2021,2023],{"id":2022},"_1两者复杂度比较","1、两者复杂度比较",[2025,2026,2027,2045],"table",{},[2028,2029,2030],"thead",{},[2031,2032,2033,2036,2039,2042],"tr",{},[2034,2035],"th",{},[2034,2037,2038],{},"查找",[2034,2040,2041],{},"插入",[2034,2043,2044],{},"删除",[2046,2047,2048,2061],"tbody",{},[2031,2049,2050,2053,2056,2058],{},[2051,2052,188],"td",{},[2051,2054,2055],{},"O(1)",[2051,2057,2055],{},[2051,2059,2060],{},"O(n)通过下标直接找到待操作元素，主要时间花在移动元素上。",[2031,2062,2063,2065,2068,2071],{},[2051,2064,178],{},[2051,2066,2067],{},"O(n)",[2051,2069,2070],{},"O(n)主要时间用于找到插入元素的位置",[2051,2072,2073],{},"O(n)主要时间用于找到待删除元素的位置",[1119,2075,2077],{"id":2076},"_2两者优缺点比较","2、两者优缺点比较",[2025,2079,2080,2093],{},[2028,2081,2082],{},[2031,2083,2084,2087,2090],{},[2034,2085,2086],{},"数组",[2034,2088,2089],{},"优点",[2034,2091,2092],{},"缺点",[2046,2094,2095],{},[2031,2096,2097,2099,2102],{},[2051,2098],{},[2051,2100,2101],{},"随机访问性强；查找速度快",[2051,2103,2104],{},"插入和删除效率低；可能浪费内存；内存空间要求高，必须有足够的连续内存空间；数组大小固定，不能动态拓展",[2025,2106,2107,2117],{},[2028,2108,2109],{},[2031,2110,2111,2113,2115],{},[2034,2112,178],{},[2034,2114,2089],{},[2034,2116,2092],{},[2046,2118,2119],{},[2031,2120,2121,2123,2126],{},[2051,2122],{},[2051,2124,2125],{},"插入删除速度快；内存利用率高，不会浪费内存；大小没有固定，拓展很灵活。",[2051,2127,2128],{},"不能随机查找，必须从第一个开始遍历，查找效率低",[1106,2130,2131],{},[1109,2132,2133,2134,2137,2138,2141],{},"两者的区别在于",[1149,2135,2136],{},"顺序结构","的要求一片连续的存储空间，而",[1149,2139,2140],{},"链式结构","的不要求存储空间连续。",[1097,2143,2145],{"id":2144},"三栈","三、栈",[1304,2147,2149],{"id":2148},"_1栈的顺序存储实现","1、栈的顺序存储实现",[1106,2151,2152],{},[1109,2153,2154,2155,2158,2159,2162],{},"通常由一个",[1149,2156,2157],{},"一维数组","和一个记录",[1149,2160,2161],{},"栈顶","元素位置的变量组成。",[1119,2164,2166],{"id":2165},"_1顺序栈结构体的定义","(1)顺序栈结构体的定义",[1106,2168,2169],{},[1109,2170,2171],{},[1149,2172,2173],{},"当 Top = -1时，表示栈空；当Top = MaxSize -1 时，栈满！",[1236,2175,2178],{"className":2176,"code":2177,"language":1525,"meta":1244},[1523],"typedef int Position;\ntypedef int ElementType;\ntypedef struct SNode *PtrToNode;\nstruct SNode\n{\n    ElementType * Data;  \u002F*存储元素的数组*\u002F\n    Position Top;        \u002F*栈顶指针*\u002F\n    int MaxSize;         \u002F*堆栈最大容量*\u002F\n};\ntypedef PtrToNode Stack;\n12345678910\n",[1128,2179,2177],{"__ignoreMap":1244},[1119,2181,2183],{"id":2182},"_2顺序栈的创建","(2)顺序栈的创建",[1236,2185,2188],{"className":2186,"code":2187,"language":1525,"meta":1244},[1523],"Stack CreateStack(int MaxSize) \u002F*顺序栈的创建*\u002F\n{\n    Stack S = (Stack)malloc(sizeof(struct SNode));\n    S->Data = (ElementType *)malloc(MaxSize * sizeof(ElementType));\n    S->Top = -1;               \u002F*\"-1\"表示空栈  \"MaxSize-1\"表示满栈*\u002F\n    S->MaxSize = MaxSize;      \u002F*指定栈的最大容量*\u002F\n    return S;\n}\n12345678\n",[1128,2189,2187],{"__ignoreMap":1244},[1119,2191,2193],{"id":2192},"_3判满","(3)判满",[1236,2195,2198],{"className":2196,"code":2197,"language":1525,"meta":1244},[1523],"bool IsFull(Stack S)        \u002F*判断栈是否满了*\u002F\n{\n    return(S->Top == S->MaxSize-1);\n}\n1234\n",[1128,2199,2197],{"__ignoreMap":1244},[1119,2201,2203],{"id":2202},"_4判空","(4)判空",[1236,2205,2208],{"className":2206,"code":2207,"language":1545,"meta":1244},[1543],"bool IsEmpty(Stack S)   \u002F*判断堆栈是否为空*\u002F\n{\n    return(S->Top == -1);\n}\n1234\n",[1128,2209,2207],{"__ignoreMap":1244},[1119,2211,2213],{"id":2212},"_5入栈","(5)入栈",[1106,2215,2216,2219],{},[1109,2217,2218],{},"在执行堆栈 Push 操作时，先判断栈是否满；",[1091,2220,2221,2224],{},[1094,2222,2223],{},"若不满，Top 加1，并将新元素放入 Data数组的Top位置上",[1094,2225,2226],{},"若满，则返回错误标志",[1236,2228,2231],{"className":2229,"code":2230,"language":1545,"meta":1244},[1543],"bool Push(Stack S, ElementType X)   \u002F*顺序栈的 入栈 操作*\u002F\n{\n    if(IsFull(S))\n    {\n        printf(\"堆栈满！\");\n        return false;\n    }\n    else\n    {\n        S->Data[++(S->Top)] = X;    \u002F*若是栈不满，则Top加 1,并将新元素放入Data数组的Top位置中*\u002F\n        return true;\n    }\n}\n12345678910111213\n",[1128,2232,2230],{"__ignoreMap":1244},[1119,2234,2236],{"id":2235},"_6出栈","(6)出栈",[1106,2238,2239,2242],{},[1109,2240,2241],{},"执行Pop操作时，首先判别栈是否为空；",[1091,2243,2244,2251],{},[1094,2245,2246,2247,2250],{},"若不为空，返回Data",[1572,2248,2249],{},"Top","，同时将Top-1;",[1094,2252,2253],{},"否则要返回错误标志",[1236,2255,2258],{"className":2256,"code":2257,"language":1525,"meta":1244},[1523],"ElementType Pop(Stack S) \u002F*顺序栈 的 出栈 操作*\u002F\n{\n    if(IsEmpty(S))\n    {\n        printf(\"堆栈空！\");\n        return ERROR;                   \u002F*ERROR 是 ElementType 类型的特殊值，标志错误。必须是正常栈元素数据不可能取到的值 *\u002F\n    }\n    else\n        return(S->Data[(S->Top)--]);    \u002F*若不空，返回Data[Top]，同时将Top减 1*\u002F\n}\n12345678910\n",[1128,2259,2257],{"__ignoreMap":1244},[1304,2261,2263],{"id":2262},"_2栈的顺序存储实现","2、栈的顺序存储实现",[1106,2265,2266],{},[1109,2267,2268,2269],{},"链栈与单链表类似，但其操作受限制，插入和删除操作",[1149,2270,2271],{},"只能在链栈的栈顶进行。",[1119,2273,2166],{"id":2274},"_1顺序栈结构体的定义-1",[1236,2276,2279],{"className":2277,"code":2278,"language":1525,"meta":1244},[1523],"typedef struct SNode *PtrToSNode;\ntypedef int ElementType;\nstruct SNode\n{\n    ElementType Data;\n    PtrToSNode Next;\n};\ntypedef PtrToSNode Stack;\n12345678\n",[1128,2280,2278],{"__ignoreMap":1244},[1119,2282,2183],{"id":2283},"_2顺序栈的创建-1",[1236,2285,2288],{"className":2286,"code":2287,"language":1525,"meta":1244},[1523],"Stack CreateStack()\n{   \u002F*构建一个堆栈的头结点，返回该结点指针*\u002F\n    Stack S;\n    S = (Stack)malloc(sizeof(struct SNode));\n    S->Next = NULL;\n    return S;\n}\n1234567\n",[1128,2289,2287],{"__ignoreMap":1244},[1119,2291,1803],{"id":2292},"_3判空-1",[1236,2294,2297],{"className":2295,"code":2296,"language":1545,"meta":1244},[1543],"bool IsEmpty(Stack S)\n{   \u002F*判断堆栈 S 是否为空，若是返回 true，否则返回 false*\u002F\n    return(S->Next == NULL);\n}\n1234\n",[1128,2298,2296],{"__ignoreMap":1244},[1119,2300,2302],{"id":2301},"_4判满-注意链栈不必判断堆栈是否满","(4)判满 注意：链栈，不必判断堆栈是否满",[1119,2304,2213],{"id":2305},"_5入栈-1",[1106,2307,2308],{},[1109,2309,2310,2311],{},"链栈，",[1149,2312,2313],{},"不必判断堆栈是否满",[1236,2315,2318],{"className":2316,"code":2317,"language":1545,"meta":1244},[1543],"bool Push(Stack S, ElementType X)\n{   \u002F*将元素 X 压入堆栈 S *\u002F\n    PtrToSNode TmpCell;\n    TmpCell = (PtrToSNode)malloc(sizeof(struct SNode));\n    TmpCell->Data = X;\n\n    \u002F\u002F头插法\n    TmpCell->Next = S->Next;\n    S->Next =TmpCell;\n    return true;\n}\n1234567891011\n",[1128,2319,2317],{"__ignoreMap":1244},[1119,2321,2236],{"id":2322},"_6出栈-1",[1236,2324,2327],{"className":2325,"code":2326,"language":1525,"meta":1244},[1523],"ElementType Pop(Stack S) ElementType Pop(Stack S)\n{   \u002F*删除并返回堆栈 S 的栈顶元素*\u002F\n    PtrToSNode FirstCell;\n    ElementType TopElem;\n\n    if(IsEmpty(S))\n    {\n        printf(\"堆栈空！\");\n        return ERROR;\n    }\n    else\n    {\n        FirstCell = S->Next;\n        TopElem = FirstCell->Data;\n        S->Next = FirstCell->Next;\n        free(FirstCell);\n        return TopElem;\n    }\n}\u002F*顺序栈 的 出栈 操作*\u002F\n{\n    if(IsEmpty(S))\n    {\n        printf(\"堆栈空！\");\n        return ERROR;                   \u002F*ERROR 是 ElementType 类型的特殊值，标志错误。必须是正常栈元素数据不可能取到的值 *\u002F\n    }\n    else\n        return(S->Data[(S->Top)--]);    \u002F*若不空，返回Data[Top]，同时将Top减 1*\u002F\n}\n12345678910111213141516171819202122232425262728\n",[1128,2328,2326],{"__ignoreMap":1244},[1304,2330,2332],{"id":2331},"_3栈的应用","3、栈的应用",[1097,2334,2336],{"id":2335},"四队列","四、队列",[1304,2338,2340],{"id":2339},"_1队列的顺序存储实现","1、队列的顺序存储实现",[1119,2342,2344],{"id":2343},"_1-循环队列的结构体定义","(1) 循环队列的结构体定义",[1236,2346,2349],{"className":2347,"code":2348,"language":1525,"meta":1244},[1523],"typedef int Status;\ntypedef int QElemType; \u002F* QElemType类型根据实际情况而定，这里假设为int *\u002F\n\u002F* 循环队列的顺序存储结构 *\u002F\ntypedef struct QNode\n{\n    QElemType data[MAXSIZE];\n    int front;      \u002F* 头指针 *\u002F\n    int rear;       \u002F* 尾指针，若队列不空，指向队列尾元素的下一个位置 *\u002F\n}SqQueue;\n123456789\n",[1128,2350,2348],{"__ignoreMap":1244},[1119,2352,2354],{"id":2353},"_2生成空队列","(2)生成空队列",[1236,2356,2359],{"className":2357,"code":2358,"language":1525,"meta":1244},[1523],"\u002F* 初始化一个空队列Q *\u002F\nStatus CreateQueue(SqQueue *Q)\n{\n    SqQueue *Q = (SqQueue)malloc(sizeof(struct QNode));\n    Q->data = (ElementType*)malloc(MaxSize * sizeof(ElementType));\n    Q->front = Q->rear = 0;\n    return  OK;\n}\n12345678\n",[1128,2360,2358],{"__ignoreMap":1244},[1119,2362,1803],{"id":2363},"_3判空-2",[1106,2365,2366],{},[1109,2367,2368,2369],{},"队空的条件是：",[1149,2370,2371],{},"rear=front",[1236,2373,2376],{"className":2374,"code":2375,"language":1525,"meta":1244},[1523],"bool IsEmpty(SqQueue *Q)\n{\n    return(Q->front == Q->rear);\n}\n1234\n",[1128,2377,2375],{"__ignoreMap":1244},[1119,2379,2381],{"id":2380},"_4判满","(4)判满",[1106,2383,2384],{},[1109,2385,2386,2387],{},"队满的条件是：",[1149,2388,2389],{},"(rear+1)%数组的长度等于 front",[1236,2391,2394],{"className":2392,"code":2393,"language":1525,"meta":1244},[1523],"bool IsFull(SqQueue *Q)\n{\n    return((Q->rear+1)% MaxSize == Q->front);\n}\n1234\n",[1128,2395,2393],{"__ignoreMap":1244},[1119,2397,2399],{"id":2398},"_5入队","(5)入队",[1236,2401,2404],{"className":2402,"code":2403,"language":1525,"meta":1244},[1523],"\u002F* 若队列未满，则插入元素e为Q新的队尾元素 *\u002F\nStatus EnQueue(SqQueue *Q,QElemType e)\n{\n    if ((Q->rear+1)%MAXSIZE == Q->front)    \u002F* 队列满的判断 *\u002F\n        return ERROR;\n    Q->data[Q->rear]=e;         \u002F* 将元素e赋值给队尾 *\u002F\n    Q->rear=(Q->rear+1)%MAXSIZE;\u002F* rear指针向后移一位置， *\u002F\n                                \u002F* 若到最后则转到数组头部 *\u002F\n    return  OK;\n}\n12345678910\n",[1128,2405,2403],{"__ignoreMap":1244},[1119,2407,2409],{"id":2408},"_6出队","(6)出队",[1236,2411,2414],{"className":2412,"code":2413,"language":1525,"meta":1244},[1523],"\u002F* 若队列不空，则删除Q中队头元素，用e返回其值 *\u002F\nStatus DeQueue(SqQueue *Q,QElemType *e)\n{\n    if (Q->front == Q->rear)            \u002F* 队列空的判断 *\u002F\n        return ERROR;\n    *e=Q->data[Q->front];               \u002F* 将队头元素赋值给e *\u002F\n    Q->front=(Q->front+1)%MAXSIZE;  \u002F* front指针向后移一位置， *\u002F\n                                    \u002F* 若到最后则转到数组头部 *\u002F\n    return  OK;\n}\n12345678910\n",[1128,2415,2413],{"__ignoreMap":1244},[1304,2417,2419],{"id":2418},"_2队列的链式存储实现","2、队列的链式存储实现",[1106,2421,2422],{},[1109,2423,2424],{},"队列与堆栈一样，也可以采用链式存储结构，但队列的头（front）必须指向链表的头结点，队列的尾（rear）指向链表的尾结点。",[1119,2426,2428],{"id":2427},"_1队列的链式存储结构体定义","(1)队列的链式存储结构体定义",[1236,2430,2433],{"className":2431,"code":2432,"language":1525,"meta":1244},[1523],"typedef int Status;\ntypedef int QElemType; \u002F* QElemType类型根据实际情况而定，这里假设为int *\u002F\ntypedef struct QNode    \u002F* 结点结构 *\u002F\n{\n   QElemType data;\n   struct QNode *next;\n}QNode,*QueuePtr;\n\ntypedef struct          \u002F* 队列的链表结构 *\u002F\n{\n   QueuePtr front,rear; \u002F* 队头、队尾指针 *\u002F\n}LinkQueue;\n123456789101112\n",[1128,2434,2432],{"__ignoreMap":1244},[1119,2436,2354],{"id":2437},"_2生成空队列-1",[1236,2439,2442],{"className":2440,"code":2441,"language":1525,"meta":1244},[1523],"\u002F* 构造一个空队列Q *\u002F\nStatus InitQueue(LinkQueue *Q)\n{\n    Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));\n    if(!Q->front)\n        exit(OVERFLOW);\n    Q->front->next=NULL;\n    return OK;\n}\n123456789\n",[1128,2443,2441],{"__ignoreMap":1244},[1119,2445,1803],{"id":2446},"_3判空-3",[1106,2448,2449],{},[1109,2450,2368,2451],{},[1149,2452,2371],{},[1236,2454,2457],{"className":2455,"code":2456,"language":1525,"meta":1244},[1523],"Status QueueEmpty(LinkQueue Q)\n{\n    if(Q.front==Q.rear)\n        return TRUE;\n    else\n        return FALSE;\n}\n1234567\n",[1128,2458,2456],{"__ignoreMap":1244},[1119,2460,2462],{"id":2461},"_4判满-链式队列不必判断堆栈是否满","(4)判满 链式队列，不必判断堆栈是否满",[1119,2464,2399],{"id":2465},"_5入队-1",[1236,2467,2470],{"className":2468,"code":2469,"language":1525,"meta":1244},[1523],"\u002F* 插入元素e为Q的新的队尾元素 *\u002F\nStatus EnQueue(LinkQueue *Q,QElemType e)\n{\n    QueuePtr s=(QueuePtr)malloc(sizeof(QNode));\n    if(!s) \u002F* 存储分配失败 *\u002F\n        exit(OVERFLOW);\n    s->data=e;\n    s->next=NULL;\n    Q->rear->next=s;    \u002F* 把拥有元素e的新结点s赋值给原队尾结点的后继，见图中① *\u002F\n    Q->rear=s;      \u002F* 把当前的s设置为队尾结点，rear指向s，见图中② *\u002F\n    return OK;\n}\n123456789101112\n",[1128,2471,2469],{"__ignoreMap":1244},[1119,2473,2409],{"id":2474},"_6出队-1",[1236,2476,2479],{"className":2477,"code":2478,"language":1525,"meta":1244},[1523],"\u002F* 若队列不空,删除Q的队头元素,用e返回其值,并返回OK,否则返回ERROR *\u002F\nStatus DeQueue(LinkQueue *Q,QElemType *e)\n{\n    QueuePtr p;\n    if(Q->front==Q->rear)\n        return ERROR;\n    p=Q->front->next;       \u002F* 将欲删除的队头结点暂存给p，见图中① *\u002F\n    *e=p->data;             \u002F* 将欲删除的队头结点的值赋值给e *\u002F\n    Q->front->next=p->next;\u002F* 将原队头结点的后继p->next赋值给头结点后继，见图中② *\u002F\n    if(Q->rear==p)      \u002F* 若队头就是队尾，则删除后将rear指向头结点，见图中③ *\u002F\n        Q->rear=Q->front;\n    free(p);\n    return OK;\n}\n1234567891011121314\n",[1128,2480,2478],{"__ignoreMap":1244},[1097,2482,2484],{"id":2483},"五栈和队列操作的特点","五、栈和队列操作的特点",[2025,2486,2487,2499],{},[2028,2488,2489],{},[2031,2490,2491,2493,2496],{},[2034,2492],{},[2034,2494,2495],{},"相同点",[2034,2497,2498],{},"不同点",[2046,2500,2501,2512],{},[2031,2502,2503,2506,2509],{},[2051,2504,2505],{},"堆栈(FILO)",[2051,2507,2508],{},"只允许在端点处插入和删除元素；",[2051,2510,2511],{},"栈是先进后出或者后进先出；栈是只能在表的一端进行插入和删除操作的线性表",[2031,2513,2514,2517,2519],{},[2051,2515,2516],{},"队列(FIFO)",[2051,2518,2508],{},[2051,2520,2521],{},"队列是先进先出；队列是只能在表的一端进行插入，然后在另外一端进行删除操作的线性表",[1097,2523,2525],{"id":2524},"六数组存储地址的计算","六、数组存储地址的计算",[2025,2527,2528,2538],{},[2028,2529,2530],{},[2031,2531,2532,2535],{},[2034,2533,2534],{},"数组类型",[2034,2536,2537],{},"存储地址的计算（a是数组首地址，len是每个数组元素所占长度）",[2046,2539,2540,2549],{},[2031,2541,2542,2544],{},[2051,2543,2157],{},[2051,2545,1154,2546,2548],{},[1572,2547,1574],{},"的存储地址：a+i*len",[2031,2550,2551,2559],{},[2051,2552,2553,2554,1716,2557],{},"二维数组:a",[1572,2555,2556],{},"m",[1572,2558,1715],{},[2051,2560,2561],{},"按行存储：a+(i * n+j) * len；按列存储：a+(j * m+i) * len",[1106,2563,2564],{},[1109,2565,2566,2569,2570,2573,2574,2576,2577,2580,2581,2584],{},[1149,2567,2568],{},"例子","：数组存储地址的计算示例：\n1）已知一维数组a中每个元素占用2个字节，求a",[1572,2571,2572],{},"10","的存储地址？\n答：a",[1572,2575,2572],{},"的存储地址为：a+10*2=a+20\n2）已知二维数组a[4]",[1572,2578,2579],{},"5","中, 每个元素占用2个字节，求元素a[3]",[1572,2582,2583],{},"2","按行为主序存储的存储地址和按列为主序存储的存储地址？\n答： 按行存储：a+(35+2) *2 = a+34\n按列存储：a+(24+3) *2 = a+22",[2586,2587,2588],"h2",{"id":363},"———————树———————",[1097,2590,2592],{"id":2591},"一二叉树","一、二叉树",[1304,2594,2596],{"id":2595},"_1定义","1、定义",[1106,2598,2599,2602,2605],{},[1109,2600,2601],{},"二叉树是每个节点最多有两个子树的树结构。",[1109,2603,2604],{},"它有五种基本形态:",[1091,2606,2607,2610,2613],{},[1094,2608,2609],{},"二叉树可以是空集;",[1094,2611,2612],{},"根可以有空的左子树或右子树；",[1094,2614,2615],{},"或者左、右子树皆为空。",[1109,2617,2618],{},[1334,2619],{"alt":2003,"src":2620},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3f604bd3.png",[1304,2622,2624],{"id":2623},"_2结点的度孩子双亲深度有序树无序树树的高度","2、结点的度、孩子、双亲、深度、有序树、无序树、树的高度",[1119,2626,2628],{"id":2627},"a结点叶子树的度","a.结点、叶子、树的度",[1106,2630,2631],{},[1091,2632,2633,2639,2645],{},[1094,2634,2635,2638],{},[1149,2636,2637],{},"结点的度","：结点拥有的子树的数目。",[1094,2640,2641,2644],{},[1149,2642,2643],{},"叶子","：度为零的结点。",[1094,2646,2647,2650],{},[1149,2648,2649],{},"树的度","：树中结点的最大的度",[1119,2652,2654],{"id":2653},"b孩子双亲兄弟子孙祖先","b.孩子、双亲、兄弟、子孙、祖先",[1106,2656,2657],{},[1091,2658,2659,2665,2671,2677,2683],{},[1094,2660,2661,2664],{},[1149,2662,2663],{},"双亲","：若一个结点有子树，该结点称为子树根的\"双亲\"。",[1094,2666,2667,2670],{},[1149,2668,2669],{},"孩子","：子树的根是该结点的\"孩子\"。",[1094,2672,2673,2676],{},[1149,2674,2675],{},"兄弟","：有相同双亲的结点互为\"兄弟\"。",[1094,2678,2679,2682],{},[1149,2680,2681],{},"子孙","：一个结点的所有子树上的任何结点都是该结点的子孙。",[1094,2684,2685,2688],{},[1149,2686,2687],{},"祖先","：从根结点到某个结点的路径上的所有结点都是该结点的祖先。",[1119,2690,2692],{"id":2691},"c无序树有序树森林","c.无序树、有序树、森林",[1106,2694,2695],{},[1091,2696,2697,2706,2715],{},[1094,2698,2699,2702,2703,1262],{},[1149,2700,2701],{},"无序树","：如果树中结点的各子树之间的次序是无次序的，",[1149,2704,2705],{},"可以交换位置",[1094,2707,2708,2711,2712,1262],{},[1149,2709,2710],{},"有序树","：如果树中结点的各子树之间的次序是有次序的, ",[1149,2713,2714],{},"不可以交换位置",[1094,2716,2717,2720],{},[1149,2718,2719],{},"森林","：0个或多个不相交的树组成。对森林加上一个根，森林即成为树；删去根，树即成为森林。",[1119,2722,2724],{"id":2723},"d层次高度","d.层次、高度",[1106,2726,2727],{},[1109,2728,2729,2732,2733,2736],{},[1149,2730,2731],{},"层次","：根结点的层次为1，其余结点的层次等于该结点的双亲结点的层次加1。\n",[1149,2734,2735],{},"树的深度和高度","：二叉树中节点的最大层次称为二叉树的深度或高度。",[1304,2738,2740],{"id":2739},"_2性质","2、性质",[1106,2742,2743,2749,2755,2768,2774,2780],{},[1109,2744,2745,2748],{},[1149,2746,2747],{},"性质1","：二叉树第 i 层上最多为 2^(i-1) (i≥1)个结点。",[1109,2750,2751,2754],{},[1149,2752,2753],{},"性质2","：深度为k的二叉树至多有2^k - 1个结点(k≥1)。",[1109,2756,2757,2760,2761,2767],{},[1149,2758,2759],{},"性质3","：具有n个结点的【完全二叉树】的高度k为(log\u003C2>n) +1）（",[1149,2762,2763,2766],{},[1572,2764,2765],{},"log2n","表示不大于与其的整数","）",[1109,2769,2770,2773],{},[1149,2771,2772],{},"性质4","：在任意一棵二叉树中，若终端结点的个数为n0，度为2的结点数为n2，则n0=n2+1。",[1109,2775,2776,2779],{},[1149,2777,2778],{},"性质5","：如果对一棵有 n个结点的完全二叉树（其深度为(log\u003C2>n) +1）的结点按 【层序】编号（从第1层到第(log\u003C2>n) +1） 层，每层从左到右），对任一结点 i （1≤ i ≤ n）有：",[1091,2781,2782,2789,2792],{},[1094,2783,2784,2785,2788],{},"如果 i = 1，则结点 i是二叉树的根，无双亲；如果 i ＞ 1，则其双亲是结点 ",[1572,2786,2787],{},"i\u002F2",";",[1094,2790,2791],{},"如果2i ＞n，则结点 i 无左孩子（即结点 i 为叶子结点）；否则其左孩子是结点 2i；",[1094,2793,2794],{},"如果 2i+1 ＞n，则结点 i 无右孩子；否则其右孩子是结点 2i+1。",[1304,2796,2798],{"id":2797},"_3满二叉树完全二叉树和二叉排序树","3、满二叉树、完全二叉树和二叉排序树",[1119,2800,2802],{"id":2801},"a满二叉树","a.满二叉树",[1106,2804,2805],{},[1109,2806,2807,2810],{},[1149,2808,2809],{},"定义","：高度为h，并且由2{h} –1个结点的二叉树，被称为满二叉树。",[1109,2812,2813],{},[1334,2814],{"alt":1334,"src":2815},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3f6ddd79.png",[1119,2817,2819],{"id":2818},"b完全二叉树","b.完全二叉树",[1106,2821,2822,2827],{},[1109,2823,2824,2826],{},[1149,2825,2809],{},"：一棵二叉树中，只有最下面两层结点的度可以小于2，并且最下一层的叶结点集中在靠左的若干位置上。这样的二叉树称为完全二叉树。",[1109,2828,2829,2832],{},[1149,2830,2831],{},"特点","：叶子结点只能出现在最下层和次下层，且最下层的叶子结点集中在树的左部。显然，一棵满二叉树必定是一棵完全二叉树，而完全二叉树未必是满二叉树。",[1109,2834,2835],{},[1334,2836],{"alt":1334,"src":2837},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3f80cde1.png",[1119,2839,2841],{"id":2840},"c二叉查找树","c.二叉查找树",[1106,2843,2844],{},[1109,2845,2846,2848],{},[1149,2847,2809],{},"：二叉查找树(Binary Search Tree)，又被称为二叉搜索树。左小右大，任意结点的左、右子树也是二叉查找树",[1109,2850,2851],{},[1334,2852],{"alt":1334,"src":2853},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3f8bd638.png",[1106,2855,2856],{},[1109,2857,2858],{},"在二叉查找树中：\n(01) 若任意节点的左子树不空，则左子树上所有结点的值均小于它的根结点的值；\n(02) 任意节点的右子树不空，则右子树上所有结点的值均大于它的根结点的值；\n(03) 任意节点的左、右子树也分别为二叉查找树。\n(04) 没有键值相等的节点（no duplicate nodes）。",[1097,2860,2862],{"id":2861},"二静态查找","二、静态查找",[1304,2864,2866],{"id":2865},"_1顺序存储结构","1、顺序存储结构",[1106,2868,2869],{},[1109,2870,2871],{},"指用一组地址连续的存储单元依次自上而下、自左至右存储完全二叉树的结点元素，即将完全二叉树上编号为i的结点元素存储在一维数组下标i－1的分量中。",[1304,2873,2875],{"id":2874},"_2顺序查找","2、顺序查找",[1106,2877,2878],{},[1109,2879,2880],{},"从表的一端开始，逐个将记录的关键字和给定值比较，若找到一个记录的关键字与给定值相等，则查找成功；若整个表中记录均比较过，仍未找到关键字等于给定值的记录，则查找失败。",[1109,2882,2883,2885],{},[1149,2884,2092],{},"：查找表的长度越长，查找效率越低。",[1109,2887,2888,2890],{},[1149,2889,2089],{},"：简单、适应面广，对查找表结构没有要求，对顺序存储和链式存储都适用。",[1304,2892,2894],{"id":2893},"_3二分查找也称折半查找是一棵二叉排序树","3、二分查找（也称“折半查找”，是一棵“二叉排序树”）",[1106,2896,2897,2908,2915,2940],{},[1109,2898,2899,2900,2903,2904,2907],{},"设查找表元素存储在一维数组r",[1572,2901,2902],{},"1,…,n","中，在表中的元素已经",[1149,2905,2906],{},"按关键字递增方式排序的","情况下，",[1109,2909,2910,2911,2914],{},"进行",[1572,2912,2913],{},"折半查找","的方法是：首先将待查元素的关键字（key）值与表r中间位置上（下标为mid）记录的关键字关键字进行比较，",[1091,2916,2917,2920,2931],{},[1094,2918,2919],{},"若相等，则查找成功；",[1094,2921,2922,2923,2926,2927,2930],{},"若key>r",[1572,2924,2925],{},"mid",".key,则说明待查记录只可能在后半个子表r",[1572,2928,2929],{},"mid+1,…,n","中；",[1094,2932,2933,2934,2936,2937,2930],{},"若key\u003Cr",[1572,2935,2925],{},".key，则说明待查记录只可能在前半个子表r",[1572,2938,2939],{},"1,…,mid-1",[1109,2941,2942,2943,2946,2947,2950],{},"这样逐步缩小范围，直到",[1149,2944,2945],{},"查找成功","或",[1149,2948,2949],{},"子表为空时失败","为止。",[1109,2952,2953],{},[1149,2954,2955],{},"注意：每次缩小范围后，改变的下标是哪个",[1236,2957,2960],{"className":2958,"code":2959,"language":1525,"meta":1244},[1523],"\u002F\u002F递增的方式排序，则折半查找的算法为\n\u002F\u002F在数组r[low...high],在数组r中找值为key的元素\nint Bsearch(int r[],int low,int high,int key)\n{\n    int mid;\n    while(low \u003C= high)\n    {\n        mid = (low + high)\u002F2;\n        if(key == r[mid])\n            return mid;\n        else if(key \u003C r[mid])\n            high = mid-1;\n        else\n            low = mid+1;\n    }\n    return -1;\n}\n\n\u002F\u002F折半查找，递归算法\nint Bsearch_rec(int r[],int low,int high,int key)\n{\n    int mid;\n    if(low \u003C= high)\n    {\n        mid = (low + high)\u002F2;\n        if(key == r[mid])\n            return mid;\n        else if(key \u003C r[mid])\n            return Bsearch_rec(r,low,mid-1,key);\n        else\n            return Bsearch_rec(r,mid+1,high,key);\n    }\n    return -1;\n}\n12345678910111213141516171819202122232425262728293031323334\n",[1128,2961,2959],{"__ignoreMap":1244},[1109,2963,2964],{},[1334,2965],{"alt":2966,"src":2967},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VgJbPWx2-1641217649130)(myReviewPicture\u002F带有11个结点的二分查找判定书.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3f97218f.png",[1109,2969,2970],{},"折半查找的过程可以用一颗二叉树来描述，以当前查找区域间的中间位置序号作为根，左半个子表和右半个子表中的记录序号分别分别作为根的左子树和右子树上的结点，这样构造的二叉树称为折半查找判定树，从树上可以看出：",[1109,2972,2973],{},"查找成功时，折半查找的过程恰好走了一条从根结点到被查找结点的路径，与关键字进行比较的次数即为被查找结点在树中的层数。因此，折半查找判定树在查找成功时进行比较的关键字个数最多不超过树的深度，而具有n个结点的判定树的深度为；所以折半查找在查找成功时和给定值进行比较的关键字个数最多为。",[1109,2975,2976,2978,2979,2981,2982,2985],{},[1149,2977,2089],{},"：查找效率更高，但它要求查找表进行顺序存储并按关键字进行排序。\n",[1149,2980,2092],{},"：对表进行插入或删除时，需要移动大量元素。\n",[1149,2983,2984],{},"适用","：表不易变动，且又经常进行查找的情况",[1304,2987,2989],{"id":2988},"_4二分查找判定树asl计算","4、二分查找判定树ASL计算",[1106,2991,2992],{},[1109,2993,2994],{},[1149,2995,2996],{},"折半查找的过程看，可用二叉树来描述，二叉树中的每个结点对应有序表中的一个记录，结点中的值为该记录在表中的位置。通常称这个描述折半查找二叉树的过程称为折半查找判定树。",[1109,2998,2999],{},[1149,3000,3001],{},"例如：顺序存储的序列{1,2,3,4,5,6,7,8,9,10} 来构建二叉判定树，计算其ASL",[1109,3003,3004,3008],{},[1334,3005],{"alt":3006,"src":3007},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-giB8nBKX-1641217649131)(myReviewPicture\u002F二分查找判定书ASL成功-16411799392662.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3fa00a68.png",[1334,3009],{"alt":3010,"src":3011},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rHJdmL7J-1641217649131)(myReviewPicture\u002F二分查找判定书ASL不成功-16411799619963.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3faf1191.png",[1236,3013,3016],{"className":3014,"code":3015,"language":1525,"meta":1244},[1523],"例如：长度为10的折半查找判定树的具体生成过程：\n    都遵循这个规律，左孩子结点\u003C根结点\u003C右孩子结点 【左小右大】\n\n    （1）在长度为10的有序表中进行折半查找，不论查找哪个记录，都必须和中间记录进行比较，而中间记录为\n（1+10）\u002F2 =5  (注意要取整)   即判定数的的根结点为5，如图7-2（a）所示。\n\n     （2）考虑判定树的左子树，即将查找区域调整到左半区，此时的查找区间为[1,4],那么中间值为（1+4）\u002F2 =2 (注意要取整) ，所以做孩子根结点为2,如图7-2（b）所示。\n\n     （3）考虑判定树的右子树，即将查找区域调整到右半区，此时的查找区间为[6,10],那么中间值为（6+10）\u002F2 =8 (注意要取整) ，所以做孩子根结点为8,如图7-2（c）所示。\n\n       (4)重复以上步骤，依次去确定左右孩子、\n\n123456789101112\n",[1128,3017,3015],{"__ignoreMap":1244},[1109,3019,3020,1601],{},[1149,3021,2831],{},[1106,3023,3024,3031],{},[1109,3025,3026,3027,3030],{},"1.折半查找是一棵",[1149,3028,3029],{},"二叉排序树","，每个根结点的值都大于左子树的所有结点的值，小于右子树所有结点的值。",[1109,3032,3033,3034,3037,3038],{},"2.折半查找判定数中的结点都是查找成功的情况，将每个结点的空指针指向一个实际上不存在的结点————",[1149,3035,3036],{},"外结点","，所有外界点都是查找不成功的情况，如图7-2（e）所示。",[1149,3039,3040],{},"如果有序表的长度为n,则外结点一定有n+1个。",[1119,3042,3044],{"id":3043},"_1查找成功的asl","（1）查找成功的ASL",[1106,3046,3047],{},[1109,3048,3049],{},[1149,3050,3051],{},"折半查找判定数中，某结点所在的层数就是即将要比较的次数，整个判定树代表的有序表的平均查找长度即为查找每个结点的比较次数之和除以有序表的 长度。",[1109,3053,3054],{},[1149,3055,3056],{},"ASL成功 = 每层结点所在高度×每层结点数 之和 除以 总结点数",[1236,3058,3061],{"className":3059,"code":3060,"language":1525,"meta":1244},[1523]," 例如：长度为10的有序表的平均查找长度为\n\n    ASL=(1×1+2×2+3×4+4×3)\u002F10=29\u002F10;\n123\n",[1128,3062,3060],{"__ignoreMap":1244},[1119,3064,3066],{"id":3065},"_2查找不成功的asl","（2）查找不成功的ASL",[1106,3068,3069],{},[1109,3070,3071],{},[1149,3072,3073],{},"折半查找判定数中，查找不成功的次数即为查找相应外结点(定义在上方）与内结点的比较次数。整个判定树代表的有序表的平均查找长度。查找失败时的有序表的平均查找长度即为查找每个外结点的比较次数之和除以外结点的个数。",[1109,3075,3076],{},[1149,3077,3078],{},"ASL失败 = （每层【补上的】结点所在高度-1）×每层【补上的】结点数 之和 除以 【补上的】总结点数",[1236,3080,3083],{"className":3081,"code":3082,"language":1525,"meta":1244},[1523],"例如：查找失败时，长度为10的有序表的平均查找长度为：\n\n    ASL=(3×5+4×6)\u002F11=39\u002F11;\n123\n",[1128,3084,3082],{"__ignoreMap":1244},[1097,3086,3088],{"id":3087},"三动态查找","三、动态查找",[1304,3090,3092],{"id":3091},"_1二叉树链表结构描述如下","1、二叉树链表结构描述如下：",[1236,3094,3097],{"className":3095,"code":3096,"language":1525,"meta":1244},[1523],"typedef struct TNode *Position;\ntypedef Position BinTree; \u002F* 二叉树类型 *\u002F\nstruct TNode\n{\u002F*树结点定义 *\u002F\n    ElementType Data; \u002F* 结点数据*\u002F\n    BinTree Left; \u002F*指向左子树*\u002F\n    BinTree Right;\u002F*指向右子树*\u002F\n};\n12345678\n",[1128,3098,3096],{"__ignoreMap":1244},[1109,3100,3101],{},[1149,3102,3103],{},"二叉链表至少包含3个域：数据域 data、左指针域 lchild和右指针域 rchild",[1109,3105,3106,3109],{},[1149,3107,3108],{},"指针域","： n个结点有2n个指针域。",[1109,3111,3112,3115],{},[1149,3113,3114],{},"空指针域","：n 个结点的二叉链表中含有 n+1 个空指针域。",[1109,3117,3118,3122],{},[1334,3119],{"alt":3120,"src":3121},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PqXCTOH8-1641217649132)(myReviewPicture\u002F二叉树的链式存储结构.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3fb17daa.png",[1334,3123],{"alt":1334,"src":3124},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3fbb6b3f.png",[1304,3126,3128],{"id":3127},"_2二叉搜索排序查找树的构造过程","2、二叉搜索（排序、查找）树的构造过程",[1119,3130,3132],{"id":3131},"_1构造过程","(1)构造过程",[1106,3134,3135,3138],{},[1109,3136,3137],{},"构造二叉排序树的过程，就是从空二叉树开始，逐个向树中插入节点的过程。",[1109,3139,3140],{},"设记录的关键码序列为：63,90,70,55,67,42,98,83,10,45,58",[1109,3142,3143],{},[1334,3144],{"alt":3145,"src":3146},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HIN82LwY-1641218126672)(myReviewPicture\u002F二叉搜索树的排序.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3fb8e575.png",[1119,3148,3150],{"id":3149},"_2插入过程算法及其代码","(2)插入过程算法及其代码",[1106,3152,3153,3156,3159,3162],{},[1109,3154,3155],{},"设待插入节点关键码值为 X ：",[1109,3157,3158],{},"（1）先在树中查找值为 X 的节点，若查找成功，说明节点已存在，无需插入；",[1109,3160,3161],{},"（2）若查找失败，说明节点不存在，则将其插入到树中",[1109,3163,3164,3165],{},"因此，",[1149,3166,3167],{},"新插入节点一定是作为叶子节点插入的。",[1236,3169,3172],{"className":3170,"code":3171,"language":1525,"meta":1244},[1523],"BinTree Insert(Bintree BST, ElmentType X)\n{\n    if(!BST)\n    {\u002F*若原来树为空，生成并返回一个结点的二叉搜索树*\u002F\n        BST = (BinTree)malloc(sizeof(struct TNode));\n        BST->Data = X;\n        BST->Left = BST->Right = NULL;\n    }\n    else\n    {\u002F*开始查找插入元素的位置*\u002F\n        if(X \u003C BST->Data)\n            BST->Left = Insert(BST->Left, X);\u002F*递归插入左子树*\u002F\n        else if(X > BST->Data)\n            BST->Right = Insert(BST->Right, X);\u002F*递归插入右子树*\u002F\n    }\n    return BST;\n}\n1234567891011121314151617\n",[1128,3173,3171],{"__ignoreMap":1244},[1119,3175,3177],{"id":3176},"_2删除过程算法及其代码","(2)删除过程算法及其代码",[1106,3179,3180],{},[1109,3181,3182,3183,3186,3187,1262],{},"二叉搜索树的删除操作比其它操作更为复杂，要删除结点在",[1149,3184,3185],{},"树中的位置","决定了操作所采用的",[1149,3188,3189],{},"策略",[1109,3191,3192,3193],{},"a.若要删除的结点是",[1149,3194,3195],{},"叶子结点",[1109,3197,3198],{},"可以直接删除，然后再修改其父结点的指针。",[1109,3200,3201],{},[1334,3202],{"alt":2003,"src":3203},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3fc03da7.png",[1109,3205,3206,3207,3210],{},"b.若要删除的结点",[1149,3208,3209],{},"只有一个孩子结点","（该结点不一定是叶结点，可以是子树的根）",[1109,3212,3213,3214],{},"删除之前需要改变父结点的指针，指向要删除结点的孩子结点。\n",[1334,3215],{"alt":2003,"src":3216},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3fc7c15f.png",[1109,3218,3219],{},"c.若要删除的结点有左、右两棵子树，有两种选择：",[1109,3221,3222],{},[1149,3223,3224],{},"基本原则：保持二叉搜索树的有序性",[1109,3226,3227],{},"1、取其右子树中的最小元素；",[1109,3229,3230],{},"2、取其左子树中的最大元素。",[1109,3232,3233],{},[1334,3234],{"alt":3235,"src":3236},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wzu1zptj-1641217649133)(myReviewPicture\u002F具有两个子树的结点删除.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3fc95c9e.png",[1119,3238,3240],{"id":3239},"_3查找过程算法及其代码","(3)查找过程算法及其代码",[1106,3242,3243,3246,3257],{},[1109,3244,3245],{},"BST树的查找思想:",[1109,3247,3248,3249,3252,3253,3256],{},"首先将",[1149,3250,3251],{},"给定的K值","与二叉排序树的",[1149,3254,3255],{},"根节点","的关键字进行比较：",[1091,3258,3259,3265,3275],{},[1094,3260,1861,3261,1490,3263,1476],{},[1149,3262,1613],{},[1149,3264,2945],{},[1094,3266,3267,3268,3271,3272,1476],{},"若给定的K值",[1149,3269,3270],{},"小于","BST树的根节点的关键字：继续在该节点的",[1149,3273,3274],{},"左子树上进行查找",[1094,3276,3277,3278,1262],{},"若给定的K值大于BST树的根节点的关键字：继续在该节点的",[1149,3279,3280],{},"右子树上进行查找",[1343,3282,3284],{"id":3283},"a二叉搜索树的递归查找函数","a.二叉搜索树的递归查找函数",[1106,3286,3287,3294],{},[1109,3288,3289,3290,3293],{},"在二叉排序树上进行查找，则是从",[1149,3291,3292],{},"根结点","出发走了一条从根到待查结点的路径；",[1109,3295,3296],{},"若查找不成功，则是从根结点出发走了一条从跟到某一叶结点的路径。",[1236,3298,3301],{"className":3299,"code":3300,"language":1525,"meta":1244},[1523],"Position Find(BinTree BST,ElementType X)\n{\n    if(!BST->Data)\n        return NULL;\u002F* 查找失败 *\u002F\n    if(X > BST->Data)\n        return Find(BST->Right, X);\u002F* 在 右子树 中递归查找 *\u002F\n    else if(X \u003C BST->Data)\n        return Find(BST->Left, X);\u002F* 在 左子树 中递归查找 *\u002F\n    else\n        return BST;\u002F* 在当前结点查找成功，返回当前结点的地址*\u002F\n}\n1234567891011\n",[1128,3302,3300],{"__ignoreMap":1244},[1343,3304,3306],{"id":3305},"b迭代查找算法","b.迭代查找算法",[1106,3308,3309,3312],{},[1109,3310,3311],{},"由于非递归函数的执行效率高，一般采用非递归的迭代来实现查找。很容易将递归函数改为迭代函数",[1109,3313,3314],{},"while循环 代替 Find递归调用即可",[1236,3316,3321],{"className":3317,"code":3319,"language":3320,"meta":1244},[3318],"language-C","Position Find(BinTree BST,ElementType X)\n{\n    while(BST)\n    {\n        if(X > BST->Data)\n            BST = BST->Right;\u002F* 向 右子树 中移动，继续查找 *\u002F\n        else if(X \u003C BST->Data)\n            BST = BST->Left; \u002F* 向 右子树 中移动，继续查找 *\u002F\n        else \u002F* X == BST->Data;*\u002F\n            break;\u002F* 在当前结点查找成功，跳出循环 *\u002F\n    }\n    return BST;\u002F* 返回找到的结点地址，或是NULL *\u002F\n}\n12345678910111213\n","C",[1128,3322,3319],{"__ignoreMap":1244},[1119,3324,3326],{"id":3325},"_4查找最大值和最小值","(4)查找最大值和最小值",[1106,3328,3329,3340,3349],{},[1109,3330,3331,3332,3335,3336,3339],{},"根据二叉搜索树的性质，",[1149,3333,3334],{},"最小元素","一定是在树的",[1149,3337,3338],{},"最左分支的端点上","。最左分支的端点：最左分支上无左孩子的结点。",[1109,3341,3342,3345,3346],{},[1149,3343,3344],{},"最大元素","一定在",[1149,3347,3348],{},"最右分支的端结点上。",[1091,3350,3351,3354,3357],{},[1094,3352,3353],{},"从根结点开始，当其不为空时，沿左分支或者右分支逐个判断各结点的指针，直到遇到空指针为止。",[1094,3355,3356],{},"当左分支逐层推下来查找到的是最小元素。",[1094,3358,3359],{},"反之，当右分支逐层推下来查找到的是最大元素。",[1109,3361,3362],{},[1334,3363],{"alt":1334,"src":3364},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3fca30a0.png",[1343,3366,3368],{"id":3367},"a最小元素的递归函数","a.最小元素的递归函数",[1236,3370,3373],{"className":3371,"code":3372,"language":1525,"meta":1244},[1523],"Position FindMin(BinTree BST)\n{ \u002F* 最小元素在最左端点 *\u002F\n    if(!BST)\n        return NULL;\u002F* 空的二叉搜素树，返回NULL *\u002F\n    else if(!BST->Left)\n        return BST; \u002F* 找到最左端点并返回 *\u002F\n    else\n        return FindMin(BST->Left); \u002F*沿左分支递归查找 *\u002F\n}\n123456789\n",[1128,3374,3372],{"__ignoreMap":1244},[1343,3376,3378],{"id":3377},"b查找最大元素的迭代函数","b.查找最大元素的迭代函数",[1236,3380,3383],{"className":3381,"code":3382,"language":1525,"meta":1244},[1523],"Position FindMax(BinTree BST)\n{\n    if(BST)\n        while(BST->Right);\n            BST = BST->Right; \u002F*沿右分支一直向下，直到最右端点 *\u002F\n    return BST;\n}\n1234567\n",[1128,3384,3382],{"__ignoreMap":1244},[1097,3386,3388],{"id":3387},"四二叉树的遍历","四、二叉树的遍历",[1106,3390,3391],{},[1109,3392,3393],{},"指按照某种次序访问二叉树的所有结点，并且每个结点仅访问一次，得到一个线性序列。",[1304,3395,3397],{"id":3396},"_1先序遍历","1、先序遍历",[1106,3399,3400,3403],{},[1109,3401,3402],{},"（1）访问根结点\n（2）先序遍历左子树\n（3）先序遍历右子树",[1109,3404,3405],{},"-中序、后序遍历相似",[1109,3407,3408],{},[1334,3409],{"alt":1334,"src":3410},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3fcd7ec4.png",[1106,3412,3413],{},[1109,3414,3415],{},"先序遍历：A → B → D → C\n中序遍历：B → D → A → C\n后续遍历：D → B → C → A\n层序遍历：A → B → C → D",[1236,3417,3420],{"className":3418,"code":3419,"language":1525,"meta":1244},[1523],"void PreOrderTraverse(BiTree T)    \u002F\u002F链式二叉树先序遍历递归算法\n{\n    if (T != NULL)\n    {\n        printf_s(\"%d \", T->data);    \u002F\u002F访问根结点\n        PreOrderTraverse(T->lchild);    \u002F\u002F先序遍历左子树\n        PreOrderTraverse(T->rchild);    \u002F\u002F先序遍历右子树\n    }\n}\n\n\u002F\u002F链式二叉树中序遍历递归算法\nvoid InOrderTraverse(BiTree T)\n{\n    if (T != NULL) {\n        InOrderTraverse(T->lchild);\n        printf_s(\"%d \", T->data);\n        InOrderTraverse(T->rchild);\n    }\n}\n\n\u002F\u002F链式二叉树后序遍历递归算法\nvoid PostOrderTraverse(BiTree T)\n{\n    if (T != NULL) {\n        PostOrderTraverse(T->lchild);\n        PostOrderTraverse(T->rchild);\n        printf_s(\"%d \", T->data);\n    }\n}\n\n123456789101112131415161718192021222324252627282930\n",[1128,3421,3419],{"__ignoreMap":1244},[1304,3423,3425],{"id":3424},"_2层序遍历队列实现","2、层序遍历(队列实现）",[1106,3427,3428],{},[1109,3429,3430],{},"仔细看看层序遍历过程，其实就是从上到下，从左到右依次将每个数放入到队列中，然后按顺序依次打印就是想要的结果。",[1106,3432,3433,3436,3447],{},[1109,3434,3435],{},"实现过程",[1091,3437,3438,3441,3444],{},[1094,3439,3440],{},"从队列中取出一个元素；",[1094,3442,3443],{},"访问该元素所指结点；",[1094,3445,3446],{},"若该元素所指结点的左、右孩子结点非空，则将其左、右孩子的指针顺序入队。",[1109,3448,3449],{},"不断执行这三步操作，直到队列为空，再无元素可取，二叉树的程序遍历就完成了。",[1236,3451,3454],{"className":3452,"code":3453,"language":1525,"meta":1244},[1523],"void LevelorDerTraversal(BinTree BT)\n{\n    Queue Q;\n    BinTree T;\n\n    if(!BT)\n        return;\u002F* 若是空树则直接返回 *\u002F\n\n    Q = CreatQueue();   \u002F* 创建空队列 *\u002F\n    AddQ(Q, BT);\n    while(!IsEmpty(Q))\n    {\n        T = DeteleQ(Q);\n        printf(\"%d\",T->Data); \u002F* 访问取出队列的结点 *\u002F\n        if(T->Left)\n            AddQ(Q, T->Left);\n        if(T->Right)\n            AddQ(Q, T->Right);\n    }\n}\n1234567891011121314151617181920\n",[1128,3455,3453],{"__ignoreMap":1244},[1119,3457,3459],{"id":3458},"_3由遍历序列还原二叉树","3、由遍历序列还原二叉树",[1106,3461,3462],{},[1109,3463,3464,3465,3468,3469,3472,3473,3476,3477,3468,3479,3472,3482,3476,3484,3487],{},"已知",[1149,3466,3467],{},"先","序遍历和",[1149,3470,3471],{},"中","序遍历，",[1149,3474,3475],{},"可以还原","二叉树；\n已知",[1149,3478,3471],{},[1149,3480,3481],{},"后",[1149,3483,3475],{},[1149,3485,3486],{},"先序遍历和后序遍历，不可以","还原二叉树.",[1109,3489,3490],{},"a.已知先序遍历和中序遍历还原二叉树",[1106,3492,3493],{},[1109,3494,3495],{},"算法思路：\n1、根据先序遍历结果确定根节点。先序遍历的第一个节点为根节点。\n2、 在中序遍历结果中找到根节点，根节点左侧的部分为左子树节点，根节点右侧的部分为右子树节点。\n3、 将中序遍历的结果按根节点分为两部分，迭代的执行第一步和第二步，直到还原整个二叉树。",[1109,3497,3498],{},"例如：已知先序遍历的结果为：ABDHIEJKCFLMGNO,中序遍历的结果为：HDIBJEKALFMCNGO",[1109,3500,3501],{},"则二叉树为以下结构：",[1109,3503,3504],{},[1334,3505],{"alt":1334,"src":3506},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3fd8636e.png",[1109,3508,3509],{},"其后序遍历结果为：HIDJKEBLMFNOGCA",[1343,3511,3513],{"id":3512},"b已知后序遍历和中序遍历还原二叉树","b.已知后序遍历和中序遍历还原二叉树",[1106,3515,3516],{},[1109,3517,3518,3521],{},[1149,3519,3520],{},"算法思路","：\n1、根据后序遍历结果确定根节点。\n后序遍历的最后一个节点为根节点。\n2、在中序遍历结果中找到根节点，根节点左侧的部分为左子树节点，根节点右侧的部分为右子树节点。\n3、将中序遍历的结果按根节点分为两部分，迭代的执行第一步和第二步，直到还原整个二叉树。",[1109,3523,3524],{},"例如：已知后序遍历的结果为：HIDJKEBLMFNOGCA,中序遍历的结果为：HDIBJEKALFMCNGO",[1109,3526,3501],{},[1109,3528,3529],{},[1334,3530],{"alt":1334,"src":3531},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3fd86d86.png",[1109,3533,3534],{},"其先序遍历结果为：ABDHIEJKCFLMGNO",[1097,3536,3538],{"id":3537},"五递归遍历算法的应用","五、递归遍历算法的应用",[1119,3540,3542],{"id":3541},"_1求二叉树的深度","1、求二叉树的深度",[1236,3544,3547],{"className":3545,"code":3546,"language":1525,"meta":1244},[1523],"\u002F\u002F求树的深度\nint TreeDeep(BiTree T)\n{\n    int deep = 0;\n    if (T != NULL)\n    {\n        int leftDeep = TreeDeep(T->lchild);\n        int rightDeep = TreeDeep(T->rchild);\n        deep = leftDeep >= rightDeep ? leftDeep + 1 : rightDeep + 1;\n    }\n    return deep;\n}\n123456789101112\n",[1128,3548,3546],{"__ignoreMap":1244},[1119,3550,3552],{"id":3551},"_2求二叉树的叶子树","2、求二叉树的叶子树",[1236,3554,3557],{"className":3555,"code":3556,"language":1525,"meta":1244},[1523],"\u002F\u002F求叶子树\nint LeafCount(BinTree T,int num)\n{\n    if(T)\n    {\n        if(!T->Left && !T->Right)\n        {\n            nm++;\n        }\n        TreeDeep(T->lchild, num);\n        TreeDeep(T->rchild, num);\n    }\n    return num;\n}\n1234567891011121314\n",[1128,3558,3556],{"__ignoreMap":1244},[1119,3560,3562],{"id":3561},"_3交互换左右子树","3、交互（换）左、右子树",[1236,3564,3567],{"className":3565,"code":3566,"language":1525,"meta":1244},[1523],"void Swap(BiTree *&right,BiTree *&left)\n{\n    BiTree *temp=right;\n    right=left;\n    left=temp;\n}\n\nvoid SwapSubtrees(BiTree *T)\n{\n    if(!T)\n        return ;\n    SwapSubtrees(T->rchild);\n    SwapSubtrees(T->lchild);\n    Swap(T->rchild,T->lchild);\n}\n123456789101112131415\n",[1128,3568,3566],{"__ignoreMap":1244},[1097,3570,3572],{"id":3571},"六静态查找和动态查找的根本区别","六、静态查找和动态查找的根本区别",[1091,3574,3575,3578],{},[1094,3576,3577],{},"上述基于二叉排序树的动态查找，它的基本原理和基于线性表的静态二分查找很相似，都是利用有序性不断缩小查找空间。",[1094,3579,3580],{},"而之所以有静态和动态之分，主要是为了适应不同的应用需求。",[2025,3582,3583,3592],{},[2028,3584,3585],{},[2031,3586,3587,3589],{},[2034,3588],{},[2034,3590,3591],{},"适合用于",[2046,3593,3594,3602],{},[2031,3595,3596,3599],{},[2051,3597,3598],{},"静态查找",[2051,3600,3601],{},"数据一旦建立好，不需要或者很少进行 删除 和 插入 操作",[2031,3603,3604,3607],{},[2051,3605,3606],{},"动态查找",[2051,3608,3609],{},"频繁的数据变化，插入 和 删除 是基本操作",[1097,3611,3613],{"id":3612},"七树森林与二叉树的转换","七、树\u002F森林与二叉树的转换",[1304,3615,3617],{"id":3616},"_1树森林与二叉树的转换","1、树、森林与二叉树的转换",[1109,3619,3620],{},"由于二叉树是有序的，为了避免混淆，对于无序树，我们约定树中的每个结点的孩子结点按从左到右的顺序进行编号。",[1106,3622,3623],{},[1109,3624,3625,3626,3629,3630,3633,3634,3637,3638,3641,3642,3644,3645,3648,3649,3652,3653],{},"将树转换成二叉树的步骤是：\n（1）加线。就是在",[1149,3627,3628],{},"所有兄弟结点","之间加一条连线；\n（2）抹线。就是对",[1149,3631,3632],{},"树中的每个结点","，只",[1149,3635,3636],{},"保留","他与",[1149,3639,3640],{},"第一个孩子结点","之间的连线，",[1149,3643,2044],{},"它与",[1149,3646,3647],{},"其它孩子","结点之间的连线；\n（3）旋转。就是",[1149,3650,3651],{},"以树的根结点为轴心","，将整棵树顺时针旋转一定角度，使之结构层次分明。\n",[1334,3654],{"alt":1334,"src":3655},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3fe6e3a9.png",[1304,3657,3659],{"id":3658},"_2森林转换为二叉树","2、森林转换为二叉树",[1109,3661,3662],{},"森林是由若干棵树组成，可以将森林中的每棵树的根结点看作是兄弟，由于每棵树都可以转换为二叉树，所以森林也可以转换为二叉树。",[1106,3664,3665],{},[1109,3666,3667,3668,3671,3672,3675,3676,3679,3680,3683,3684,3687,3688,1918,3691,3694],{},"将森林转换为二叉树的步骤是：\n（1）",[1149,3669,3670],{},"先把每棵树转换为二叉树","；\n（2）第一棵二叉树",[1149,3673,3674],{},"不动","，从第二棵二叉树",[1149,3677,3678],{},"开始","，依次把",[1149,3681,3682],{},"后一棵","二叉树的根结点作为",[1149,3685,3686],{},"前一棵","二叉树的",[1149,3689,3690],{},"根结点的右孩子结点",[1149,3692,3693],{},"用线连接起来","。当所有的二叉树连接起来后得到的二叉树就是由森林转换得到的二叉树。",[1109,3696,3697],{},[1334,3698],{"alt":1334,"src":3699},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3fe7ed50.png",[1304,3701,3703],{"id":3702},"_3二叉树转换为树","3、二叉树转换为树",[1106,3705,3706],{},[1109,3707,3708,1864,3711,1486,3714,3717,3718,1486,3721,3724,3725,3728,3729,3732,3733,3736,3737,3740,3741],{},[1149,3709,3710],{},"二叉树转换为树",[1149,3712,3713],{},"树转换为二叉树",[1149,3715,3716],{},"逆过程","，其步骤是：\n（1）若",[1149,3719,3720],{},"某结点",[1149,3722,3723],{},"左孩子结点存在","，将",[1149,3726,3727],{},"左孩子结点的右孩子结点、右孩子结点的右孩子结点","……都作为",[1149,3730,3731],{},"该结点","的孩子结点，将该结点与这些",[1149,3734,3735],{},"右孩子结点用线连接","起来；\n（2）",[1149,3738,3739],{},"删除原二叉树","中所有结点与其右孩子结点的连线；\n（3）整理（1）和（2）两步得到的树，使之结构层次分明。\n",[1334,3742],{"alt":1334,"src":3743},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3fe9c5ca.png",[1304,3745,3747],{"id":3746},"_4二叉树转换为森林","4、二叉树转换为森林",[1106,3749,3750],{},[1109,3751,3752],{},"二叉树转换为森林比较简单，其步骤如下：\n（1）先把每个结点与右孩子结点的连线删除，得到分离的二叉树；\n（2）把分离后的每棵二叉树转换为树；\n（3）整理第（2）步得到的树，使之规范，这样得到森林。",[1304,3754,3756],{"id":3755},"_5转换以后的特点","5、转换以后的特点：",[1109,3758,3759],{},"(1、 根据树与二叉树的转换关系以及二叉树的遍历定义可以推知：",[1091,3761,3762,3765,3768],{},[1094,3763,3764],{},"树的先序遍历与其转换的相应的二叉树的先序遍历的结果序列相同；",[1094,3766,3767],{},"树的后序遍历与其转换的二叉树的中序遍历的结果序列相同；",[1094,3769,3770],{},"树的层序遍历与其转换的二叉树的后序遍历的结果序列相同。",[1109,3772,3773],{},"（2、 由森林与二叉树的转换关系以及森林与二叉树的遍历定义可知：",[1109,3775,3776],{},"森林的先序遍历和中序遍历与所转换得到的二叉树的先序遍历和中序遍历的结果序列相同。",[1097,3778,3780],{"id":3779},"八线索二叉树","八、线索二叉树",[1106,3782,3783,3792,3843,3851],{},[1109,3784,3785,3786,3789,1601],{},"传统的二叉链表仅能体现出一种父子关系，不能直接得到结点在遍历中的前驱或后继。引入【线索二叉树】正是为了",[1149,3787,3788],{},"加快查找结点前驱和后继的速度。",[1149,3790,3791],{},"（1、定义",[1091,3793,3794,3807,3816,3829],{},[1094,3795,3796,3799,3800,3803,3804,1476],{},[1149,3797,3798],{},"前驱与后继","：在二叉树的",[1128,3801,3802],{},"先序、中序或后序遍历序列","中的两个",[1128,3805,3806],{},"相邻的结点",[1094,3808,3809,3812,3813,1476],{},[1149,3810,3811],{},"线索","：指向前驱或后继的",[1128,3814,3815],{},"结点的指针",[1094,3817,3818,1601,3821,1486,3824,1486,3827,1476],{},[1149,3819,3820],{},"线索二叉树",[1128,3822,3823],{},"加上线索",[1128,3825,3826],{},"二叉链表",[1128,3828,364],{},[1094,3830,3831,3834,3835,3838,3839,3842],{},[1149,3832,3833],{},"线索化","：对二叉树按",[1128,3836,3837],{},"某个遍历次序","使其",[1128,3840,3841],{},"变为线索二叉树","的过程。",[1109,3844,3845,1601,3848],{},[1149,3846,3847],{},"（2、规定",[1149,3849,3850],{},"【口诀：左前右后，0孩1前后】",[1091,3852,3853,3867,3880],{},[1094,3854,1861,3855,3858,3859,3862,3863,3866],{},[1128,3856,3857],{},"无左子树","，令",[1128,3860,3861],{},"lchild","指向其",[1128,3864,3865],{},"前驱","结点；",[1094,3868,1861,3869,3858,3872,3875,3876,3879],{},[1128,3870,3871],{},"无右子树",[1128,3873,3874],{},"rchild","执行指向其",[1128,3877,3878],{},"后继","结点",[1094,3881,3882,3883,3886,3887,3890,3891,1262],{},"增加",[1128,3884,3885],{},"两个标志域标","识是指",[1128,3888,3889],{},"左\u002F右孩子","还是指向",[1128,3892,3893],{},"前驱\u002F后继",[1304,3895,3897],{"id":3896},"_1存储结构","1、存储结构",[1236,3899,3902],{"className":3900,"code":3901,"language":1525,"meta":1244},[1523],"\u002F\u002F线索二叉树存储结构\ntypedef struct ThreadNode{\n    char data;\n    struct ThreadNode *lchild, *rchild; \u002F\u002F 左右孩子指针\n    int ltag, rtag; \u002F\u002F 左右线索标志\n}ThreadNode, *ThreadTree;\n123456\n",[1128,3903,3901],{"__ignoreMap":1244},[1109,3905,3906],{},[1334,3907],{"alt":3908,"src":3909},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fXyUjz8c-1641217649133)(myReviewPicture\u002F线索二叉树的结构.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3fea5ad1.png",[1304,3911,3913],{"id":3912},"_2如何判断是孩子还是线索","2、如何判断是孩子还是线索",[1109,3915,3916,1716,3919],{},[1149,3917,3918],{},"其标志位含义如下：",[1149,3920,3850],{},[1109,3922,3923],{},[1334,3924],{"alt":3925,"src":3926},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gl66MqHn-1641217649134)(myReviewPicture\u002F线索二叉树的标识符含义.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3fe9e318.png",[1091,3928,3929,3932],{},[1094,3930,3931],{},"这种加上线索的二叉链表称为线索链表，相应的二叉树称为线索二叉树。",[1094,3933,3934,3935,3938],{},"根据线索性质的不同， 线索二叉树可分为",[1149,3936,3937],{},"前序线索二叉树、 中序线索二叉树和后序线索二叉树","三种。",[1304,3940,3942],{"id":3941},"_3三种遍历","3、三种遍历",[1106,3944,3945,3948,3958,3961,3964],{},[1109,3946,3947],{},"因为线索化后， 各个结点指向有变化， 因此原来的遍历方式不能使用， 需要使用新的方式遍历线索化二叉树。",[1109,3949,3950,3951,3954,3955,1262],{},"中序线索二叉树的结点中",[1149,3952,3953],{},"隐含","了线索二叉树的",[1149,3956,3957],{},"前驱和后继信息",[1109,3959,3960],{},"在对其遍历时，需要找到第一个具有前驱结点的左结点，然后依次找结点的后继。",[1109,3962,3963],{},"在中序线索二叉树中找结点后继的规律是:",[1091,3965,3966,3978],{},[1094,3967,3968,3969,1490,3972,3975,3976,2788],{},"若其",[1149,3970,3971],{},"右标志为1",[1149,3973,3974],{},"右链为线索","，指示其",[1149,3977,3878],{},[1094,3979,3980,3981,3984],{},"否则遍历",[1149,3982,3983],{},"右子树中第一个访问","的结点（右子树中最左下的结点）为其后继。",[1236,3986,3989],{"className":3987,"code":3988,"language":1525,"meta":1244},[1523],"void InOrderTraverse(BiThrTree T){ \u002F\u002F 中序输出\n    if(T)\n    {\n        InOrderTraverse(T->lchild); \u002F\u002F中序遍历左子树\n        cout\u003C\u003C T->data;\n        InOrderTraverse(T->rchild); \u002F\u002F中序遍历右子树\n    }\n}\n12345678\n",[1128,3990,3988],{"__ignoreMap":1244},[1097,3992,3994],{"id":3993},"九哈夫曼树","九、哈夫曼树",[1304,3996,3998],{"id":3997},"_1带权路径长度wpl","1、带权路径长度WPL",[1109,4000,4001],{},[1334,4002],{"alt":1334,"src":4003},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3fee2941.png",[1304,4005,4007],{"id":4006},"_2哈夫曼树的构造算法","2、哈夫曼树的构造（算法）",[1106,4009,4010],{},[1109,4011,4012],{},"构造 Huffman 树的基本思想：权值大的结点用短路径，权值小的结点用长路径。",[1109,4014,4015],{},[1334,4016],{"alt":1334,"src":4017},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3ffe9b85.png",[1106,4019,4020],{},[1109,4021,4022],{},"构造过程",[1109,4024,4025],{},[1334,4026],{"alt":2003,"src":4027},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b3ffe9963.png",[1109,4029,4030],{},[1334,4031],{"alt":4032,"src":4033},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S9xCYfbA-1641217649135)(myReviewPicture\u002Fhuffmantree2.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b4000e0f6.png",[1304,4035,4037],{"id":4036},"_3哈夫曼树的性质","3、哈夫曼树的性质",[1109,4039,4040],{},[1334,4041],{"alt":1334,"src":4042},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b400ae7d3.png",[1304,4044,4046],{"id":4045},"_4哈夫曼编码","4、哈夫曼编码",[1109,4048,4049],{},[1334,4050],{"alt":1334,"src":4051},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b400d4c84.png",[1109,4053,4054],{},[1334,4055],{"alt":1334,"src":4056},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b400f253d.png",[2586,4058,4060],{"id":4059},"散列查找","———散列查找———",[1097,4062,4064],{"id":4063},"一散列查找","一、散列查找",[1304,4066,4068],{"id":4067},"_1基本概念-1","1、基本概念",[1091,4070,4071],{},[1094,4072,4073],{},[1149,4074,4075],{},"散列函数",[1109,4077,4078],{},"在进行查找时，在记录的存储位置与它的关键字之间建立一个确定的对应关系h,以线性表中每个元素的关键字K为自变量，通过函数h(K)计算出该元素的存储位置，我们将h函数称为散列函数或哈希函数。h(K)的值称为散列地址或哈希地址。",[1091,4080,4081],{},[1094,4082,4083],{},[1149,4084,4085],{},"冲突",[1109,4087,4088],{},"在实际应用中，通常可能出现一个待插入元素的散列地址单元已被占用情况，使得该元素无法直接存入此单元，这种情况称为冲突。",[1091,4090,4091,4100],{},[1094,4092,4093,4096,4099],{},[1149,4094,4095],{},"同义词",[4097,4098],"br",{},"具有不同关键字而具有相同散列地址的元素称为同义词，即key1≠key2，但h(key1)=h(key2)。由同义词引起的冲突称作同义词冲突。",[1094,4101,4102,4105,4107],{},[1149,4103,4104],{},"装填因子(α)",[4097,4106],{},"指散列表中已存入的元素数n与散列表空间大小m的比值,即：α=n\u002Fm。当α越小时，冲突可能性就越小，但同时，存储空间利用率就越低。",[1109,4109,4110],{},"散列表：根据设定的哈希函数及处理冲突的方法将一组关键字映象到一个有限的连续的地址集上，即把记录存放在表中映象的位置上，这种表便称为散列表(哈希表)。",[1091,4112,4113],{},[1094,4114,4115],{},"一个散列表的好坏与三个因素有关：1.装填因子 2、所采用的散列函数 3、解决冲突的方法",[1106,4117,4118,4123],{},[1109,4119,4120,4121,1601],{},"假定一个线性表为A=(18,75,60,43,54,90,46)，选取散列函数为：h(K)=K%m 取m=13\n则得每个元素散列地址：\nh(18)=18 % 13=5\nh(75)=75 % 13=10\nh(60)=60 % 13=8\nh(43)=43 % 13=4\nh(54)=54 % 13=2\nh(90)=90 % 13=12\nh(46)=46 % 13=7\n根据散列地址，实现元素的存储映象H",[1572,4122,2556],{},[2025,4124,4125,4167],{},[2028,4126,4127],{},[2031,4128,4129,4132,4135,4137,4140,4143,4145,4148,4151,4154,4157,4159,4162,4165],{},[2034,4130,4131],{},"0",[2034,4133,4134],{},"1",[2034,4136,2583],{},[2034,4138,4139],{},"3",[2034,4141,4142],{},"4",[2034,4144,2579],{},[2034,4146,4147],{},"6",[2034,4149,4150],{},"7",[2034,4152,4153],{},"8",[2034,4155,4156],{},"9",[2034,4158,2572],{},[2034,4160,4161],{},"11",[2034,4163,4164],{},"12",[2034,4166],{},[2046,4168,4169],{},[2031,4170,4171,4174,4176,4178,4181,4183,4186,4189,4191,4194,4197,4199,4202,4204],{},[2051,4172,4173],{},"H",[2051,4175],{},[2051,4177],{},[2051,4179,4180],{},"54",[2051,4182],{},[2051,4184,4185],{},"43",[2051,4187,4188],{},"18",[2051,4190],{},[2051,4192,4193],{},"46",[2051,4195,4196],{},"60",[2051,4198],{},[2051,4200,4201],{},"75",[2051,4203],{},[2051,4205,4206],{},"90",[1106,4208,4209,4212],{},[1109,4210,4211],{},"例：如向下表中再插入元素70时，70%13=5，则出现了冲突",[2025,4213,4214,4246],{},[2028,4215,4216],{},[2031,4217,4218,4220,4222,4224,4226,4228,4230,4232,4234,4236,4238,4240,4242,4244],{},[2034,4219],{},[2034,4221,4131],{},[2034,4223,4134],{},[2034,4225,2583],{},[2034,4227,4139],{},[2034,4229,4142],{},[2034,4231,2579],{},[2034,4233,4147],{},[2034,4235,4150],{},[2034,4237,4153],{},[2034,4239,4156],{},[2034,4241,2572],{},[2034,4243,4161],{},[2034,4245,4164],{},[2046,4247,4248],{},[2031,4249,4250,4252,4254,4256,4258,4260,4262,4264,4266,4268,4270,4272,4274,4276],{},[2051,4251,4173],{},[2051,4253],{},[2051,4255],{},[2051,4257,4180],{},[2051,4259],{},[2051,4261,4185],{},[2051,4263,4188],{},[2051,4265],{},[2051,4267,4193],{},[2051,4269,4196],{},[2051,4271],{},[2051,4273,4201],{},[2051,4275],{},[2051,4277,4206],{},[1304,4279,4281],{"id":4280},"_2散列函数","2、散列函数",[1109,4283,4284],{},[1572,4285,4286],{},"外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OtlYI1uv-1641217649135)(myReviewPicture\u002F散列函数.png)",[1236,4288,4291],{"className":4289,"code":4290,"language":1241},[1239]," 构造散列函数的目标是使散列地址尽可能均匀分布在散列空间上，同时使计算尽可能简单，以节省计算时间。\n1\n",[1128,4292,4290],{"__ignoreMap":1244},[1119,4294,4296],{"id":4295},"_1关键词为数字时","（1、关键词为数字时：",[1343,4298,4300],{"id":4299},"a直接定址法","a.直接定址法",[1109,4302,4303],{},[1334,4304],{"alt":4305,"src":4306},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VlxRhB6x-1641217649136)(myReviewPicture\u002F直接定址法.png)]","https:\u002F\u002Fi-blog.csdnimg.cn\u002Fblog_migrate\u002F4a426e7c26d23a12abae842ecc2e1ace.png",[1343,4308,4310],{"id":4309},"b除留余数法常用","b.除留余数法(常用)",[1109,4312,4313],{},[1334,4314],{"alt":4315,"src":4316},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fZm4ezqe-1641217649136)(myReviewPicture\u002F除留余数法.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b401eef26.png",[1343,4318,4320],{"id":4319},"c数字分析法","c.数字分析法",[1236,4322,4325],{"className":4323,"code":4324,"language":1241},[1239],"分析数字关键字在各位上的变化情况，取比较随机的位作为散列地址，如电话号码、身份证号码某几位会比较随机；\n1\n",[1128,4326,4324],{"__ignoreMap":1244},[1106,4328,4329,4332,4335,4338,4341,4344,4347,4350,4353],{},[1109,4330,4331],{},"**例：**有一组关键字如下：",[1109,4333,4334],{},"92326875",[1109,4336,4337],{},"92739628",[1109,4339,4340],{},"92343634",[1109,4342,4343],{},"92706816",[1109,4345,4346],{},"92774638",[1109,4348,4349],{},"92381262",[1109,4351,4352],{},"92394220",[1109,4354,4355,4356],{},"通过分析：每个关键字从左到右第1、2、3位和第6位取值较集中，不宜作散列地址，其余的第4、5、7、8位取值分散，可以选择，若取最后两位作散列地址，得：",[1149,4357,4358],{},"(2,75,28,34,16,38,62,20)",[1343,4360,4362],{"id":4361},"d平方取中法","d.平方取中法",[1236,4364,4367],{"className":4365,"code":4366,"language":1241},[1239],"key取平方再取中间几位\n1\n",[1128,4368,4366],{"__ignoreMap":1244},[1119,4370,4372],{"id":4371},"_2关键词为字符时","（2、关键词为字符时：",[1343,4374,4376],{"id":4375},"aascii码加和法","a、ASCII码加和法",[1236,4378,4381],{"className":4379,"code":4380,"language":1241},[1239],"h(key)=(求和key[i])mod TableSize\n1\n",[1128,4382,4380],{"__ignoreMap":1244},[1343,4384,4386],{"id":4385},"b前3个字符移位法","b、前3个字符移位法",[1236,4388,4391],{"className":4389,"code":4390,"language":1241},[1239],"h(key)=(key[0]*27*27+key[1]*27+key[2])mod TableSize\n1\n",[1128,4392,4390],{"__ignoreMap":1244},[1097,4394,4396],{"id":4395},"二处理冲突的方法","二、处理冲突的方法",[1304,4398,4400],{"id":4399},"_1开放定址法","1、开放定址法",[1109,4402,4403],{},[1334,4404],{"alt":4405,"src":4406},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w3vCRkqI-1641217649137)(assets\u002F开放定址法2.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b4022f739.png",[1343,4408,4410],{"id":4409},"a线性探测法","a.线性探测法",[1109,4412,4413],{},[1334,4414],{"alt":4415,"src":4416},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CKgRc9iU-1641217649138)(myReviewPicture\u002F线性探测法.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b402672fe.png",[1109,4418,4419],{},[1334,4420],{"alt":4421,"src":4422},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dRJEytI9-1641217649139)(myReviewPicture\u002F开放定址法.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b402c6fc3.png",[1109,4424,4425],{},[1334,4426],{"alt":4427,"src":4428},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s9TU3kVj-1641217649139)(myReviewPicture\u002FASL.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b402edf95.png",[1109,4430,4431,4434],{},[1149,4432,4433],{},"注意","：查找某个值时，用散列函数计算完后，如果那个结果位置上的数字与关键词不一样时，并不能断定关键词不存在，还应该按照冲突解决策略继续找，直到找到空位置了还没找到，才能断定该关键词不存在。",[1343,4436,4438],{"id":4437},"b平方探测二次探测","b、平方探测（二次探测）",[1109,4440,4441],{},[1334,4442],{"alt":4443,"src":4444},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tK3J9VUv-1641217649140)(myReviewPicture\u002F平方探测法5.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b40381e62.png",[1106,4446,4447],{},[1109,4448,4449],{},"举例：h(key)=key mod 11;",[1109,4451,4452],{},[1334,4453],{"alt":4454,"src":4455},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jyTvTfbw-1641217649140)(myReviewPicture\u002F平方探测法.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b4039a89b.png",[1109,4457,4458],{},[1334,4459],{"alt":4460,"src":4461},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XTqZBJVG-1641217649140)(myReviewPicture\u002F平方探测法2.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b403ddb6c.png",[1109,4463,4464],{},"**注意：**取素数是为了减少公因子（减少冲突）",[1109,4466,4467],{},[1334,4468],{"alt":4469,"src":4470},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RL4wdkRn-1641217649142)(myReviewPicture\u002F散列表的装填因子.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b4049a4b5.png",[1343,4472,4474],{"id":4473},"c在散列法","c.在散列法",[1109,4476,4477],{},[1334,4478],{"alt":4479,"src":4480},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sXqpjUkM-1641217649142)(myReviewPicture\u002F再散列法.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b4047fb3b.png",[1304,4482,4484],{"id":4483},"_2分离链接法","2、分离链接法",[1109,4486,4487],{},[1334,4488],{"alt":2003,"src":4489},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b404ef82b.png",[1109,4491,4492],{},[1334,4493],{"alt":4494,"src":4495},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QpGllGXr-1641217649142)(myReviewPicture\u002F链地址法.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b405908a6.png",[2586,4497,4499],{"id":4498},"图","———————————————图————————————————",[1097,4501,4503],{"id":4502},"一图的基本概念","一、图的基本概念",[1106,4505,4506],{},[1109,4507,4508,1262],{},[1149,4509,4510],{},"集合只有同属于一个集合；线性结构存在一对一的关系；树形结构存在一对多的关系；图状结构存在多对多的关系",[1109,4512,4513],{},[1334,4514],{"alt":1334,"src":4515},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b4059a033.png",[1109,4517,4518],{},[1334,4519],{"alt":1334,"src":4520},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b50ea5e8c.png",[1304,4522,4524],{"id":4523},"_1简单图","1、简单图",[1106,4526,4527,4530,4535],{},[1109,4528,4529],{},"简单图满足以下两条内容：",[1109,4531,4532],{},[1149,4533,4534],{},"1）不存在重复边",[1109,4536,4537],{},[1149,4538,4539],{},"2）不存在顶点到自身的边",[1304,4541,4543],{"id":4542},"_2完全图","2、完全图",[1106,4545,4546],{},[1109,4547,4548],{},"任意两顶点之间都存在边",[1304,4550,4552],{"id":4551},"_3连通分量","3、连通分量",[1106,4554,4555],{},[1109,4556,4557],{},"在无向图中，两顶点有路径存在，就称为连通的。若图中任意两顶点都连通，同此图为连通图。无向图中的极大连通子图称为连通分量。",[1304,4559,4561],{"id":4560},"_4强连通分量","4、强连通分量",[1106,4563,4564,4570],{},[1109,4565,4566,4567,1262],{},"在有向图中，两顶点两个方向都有路径，两顶点称为",[1149,4568,4569],{},"强连通",[1109,4571,4572],{},"若任一顶点都是强连通的，称为强连通图。有向图中极大强连通子图为有向图的强连通分量。",[1304,4574,4576],{"id":4575},"_5顶点的度入度和出度","5.顶点的度、入度和出度",[1106,4578,4579,4588,4597],{},[1109,4580,4581,4584,4585,1262],{},[1149,4582,4583],{},"顶点的度","为以该顶点为一个端点的",[1149,4586,4587],{},"边的数目",[1109,4589,1827,4590,4593,4594,1262],{},[1149,4591,4592],{},"无向图","，顶点的边数为度，",[1149,4595,4596],{},"度数之和是顶点边数的 2 倍",[1109,4598,1827,4599,4602,4603,1262,4606],{},[1149,4600,4601],{},"有向图","，入度是以顶点为终点，出度相反。有向图的",[1149,4604,4605],{},"全部顶点入度之和等于出度之和且等于边数",[1149,4607,4608],{},"顶点的度等于入度与出度之和",[1109,4610,4611,4613],{},[1149,4612,4433],{},"：入度与出度是针对有向图来说的",[1097,4615,4617],{"id":4616},"二图的存储","二、图的存储",[1304,4619,4621],{"id":4620},"_1数组邻接矩阵表示法","1、数组（邻接矩阵）表示法",[1091,4623,4624,4627,4636],{},[1094,4625,4626],{},"建立一个顶点表（记录各个顶点信息）和一个邻接矩阵（表示各个顶点之间关系）。",[1094,4628,4629,4630,4632],{},"设图A=（V，E）有n个顶点，则",[4097,4631],{},[1334,4633],{"alt":4634,"src":4635},"åœ¨è¿™é‡Œæ’å ¥å›¾ç‰‡æè¿°","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b50e89c5e.png",[1094,4637,4638,4639,1716,4641,4643],{},"图的邻接矩阵是一个二位数组A.arcs",[1572,4640,1715],{},[1572,4642,1715],{},"，定义为：",[1109,4645,4646],{},"åœ¨è¿™é‡Œæ’å\n¥å›¾ç‰‡æè¿°",[1119,4648,4650],{"id":4649},"a无向图的邻接矩阵表示法","a.无向图的邻接矩阵表示法",[1106,4652,4653],{},[1109,4654,4655,4656,4658,4659,4662,4663],{},"分析1：",[1149,4657,4592],{},"的邻接矩阵是",[1149,4660,4661],{},"对称","的；\n分析2：顶点i的度=第i行（列）中1的个数；\n",[1149,4664,4665],{},"特别：完全图的邻接矩阵中，对角元素为0，其余1。",[1109,4667,4668],{},[1334,4669],{"alt":4634,"src":4670},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b50e9cb15.png",[1119,4672,4674],{"id":4673},"b有向图的邻接矩阵表示法","b.有向图的邻接矩阵表示法",[1106,4676,4677],{},[1109,4678,4679,4680,4683,4684,4687,4688,4691,4692,4695,4696,4699,4700,4703,4706],{},"注：在有向图的邻接矩阵中，\n第 i ",[1149,4681,4682],{},"行","含义：以结点vi为尾的弧（即",[1149,4685,4686],{},"出度边","）\n第 i ",[1149,4689,4690],{},"列","含义：以结点vi为头的弧（即",[1149,4693,4694],{},"入度边","）\n分析1：有向图的邻接矩阵",[1149,4697,4698],{},"可能是不对称","的；\n分析2：",[1149,4701,4702],{},"顶点的出度 = 第 i 行元素之和",[1149,4704,4705],{},"顶点的入度 = 第 i 列元素之和",[1149,4707,4708],{},"顶点的度 = 第 i 行元素之和 + 第 i 列元素之和",[1109,4710,4711],{},[1334,4712],{"alt":2003,"src":4713},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b50ed60f0.png",[1119,4715,4717],{"id":4716},"c有权图网的邻接矩阵表示法","c.有权图（网）的邻接矩阵表示法",[1109,4719,4720],{},[1334,4721],{"alt":2003,"src":4722},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b50eb310f.png",[1109,4724,4725],{},[1334,4726],{"alt":2003,"src":4727},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b50f02fc2.png",[1304,4729,4731],{"id":4730},"_2邻接表顺序存储与链式存储结合","2.邻接表（顺序存储与链式存储结合）",[1109,4733,4734,4735,4739],{},"![",[1334,4736],{"alt":4737,"src":4738},"åœ¨è¿™é‡Œæ’å","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b50f9e1aa.png",[1334,4740],{"alt":2003,"src":4741},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b50fd32c4.png",[1119,4743,4745],{"id":4744},"a无向图的邻接表","a.无向图的邻接表",[1109,4747,4748],{},[1334,4749],{"alt":1334,"src":4750},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b5105fedc.png",[1119,4752,4754],{"id":4753},"b有向图的邻接表与逆邻接表","b.有向图的邻接表与逆邻接表",[1109,4756,4757],{},[1334,4758],{"alt":4759,"src":4760},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-trpuTIAt-1641217649145)(myReviewPicture\u002F有向图的邻接表.jpeg)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b5108eb3f.png",[1119,4762,4764],{"id":4763},"c带权值的网图","c.带权值的网图",[1109,4766,4767],{},[1334,4768],{"alt":4769,"src":4770},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ah5zBlPv-1641217649146)(myReviewPicture\u002F网图的邻接表.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b510a808e.png",[1097,4772,4774],{"id":4773},"三图的遍历","三、图的遍历",[1119,4776,4778],{"id":4777},"_1深度优先遍历算法","1、深度优先遍历算法",[1106,4780,4781,4784,4787],{},[1109,4782,4783],{},"深度优先搜索类似于树的先序遍历。",[1109,4785,4786],{},"其基本思想是：",[1091,4788,4789,4800],{},[1094,4790,4791,4792,4795,4796,4799],{},"首先访问起始顶点v，然后由v出发，访问与",[1149,4793,4794],{},"v 邻接且未被访问","的任一顶点w1，再访问",[1149,4797,4798],{},"与w1 邻接且未被","访问的任一顶点W2……重复上述操作。",[1094,4801,4802,4803,4806,4807,4810,4811,4814,4815,4818],{},"当",[1149,4804,4805],{},"不能再继续向下访问","时，依次",[1149,4808,4809],{},"退回到最近被访问的顶点","，若它还有邻接顶点",[1149,4812,4813],{},"未被访问过","，则从该点开始",[1149,4816,4817],{},"继续上述搜索过程","，直至图中所有顶点均被访问过为止。",[1109,4820,4821],{},[1334,4822],{"alt":4823,"src":4824},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tAlBFL32-1641217649146)(myReviewPicture\u002F深度优先遍历.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b5107057c.png",[1106,4826,4827],{},[1109,4828,4829],{},"从顶点a 出发，进行深度优先遍历，可以得到的一种顶点序列为：a e d f c b",[1119,4831,4833],{"id":4832},"_2广度优先遍历算法","2、广度优先遍历算法",[1106,4835,4836,4839,4841],{},[1109,4837,4838],{},"广度优先搜索类似于二叉树的层序遍历算法。",[1109,4840,4786],{},[1091,4842,4843,4853,4866],{},[1094,4844,4845,4846,4849,4850,1476],{},"首先访问起始顶点v，接着由ν出发，依次访问v 的各个",[1149,4847,4848],{},"未访问过的邻接顶点","W1，W2，…，Wi，然后依次访问W1，W2，…，Wi的",[1149,4851,4852],{},"所有未被访问过的邻接顶点",[1094,4854,4855,4856,4859,4860,4862,4863,1262],{},"再从",[1149,4857,4858],{},"这些访问过的顶点","出发，访问它们",[1149,4861,4852],{},"，直至图中的",[1149,4864,4865],{},"所有顶点都被访问过为止",[1094,4867,4868,4869,4872,4873,4876,4877,1262],{},"若此时图中",[1149,4870,4871],{},"尚有顶点未被访问","，则另选图中的",[1149,4874,4875],{},"一个未被访问的顶点作为始点","，重复上述过程，直至图中",[1149,4878,4879],{},"所有顶点都被访问到为止",[1109,4881,4882],{},[1334,4883],{"alt":4884,"src":4885},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4dDjFgZo-1641217649147)(myReviewPicture\u002F广度优先遍历.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b510a84bf.png",[1106,4887,4888],{},[1109,4889,4890],{},"从顶点1 出发，按照广度优先规则遍历，可以得到的一种顶点序列是： 1234576",[1097,4892,4894],{"id":4893},"二最小生成树","二、最小生成树",[1119,4896,4898],{"id":4897},"_1性质","1、性质",[1109,4900,4901],{},[1334,4902],{"alt":4903,"src":4904},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hfg0lPhL-1641217649147)(myReviewPicture\u002F最小生成树的性质.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b51135fb1.png",[1119,4906,4908],{"id":4907},"_2prim算法","2、Prim算法",[1109,4910,4911],{},[1334,4912],{"alt":4913,"src":4914},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uhZfCQrh-1641217649147)(myReviewPicture\u002FPrim算法.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b5117aae2.png",[1109,4916,4917],{},[1334,4918],{"alt":4919,"src":4920},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hrqqoFVo-1641217649148)(myReviewPicture\u002F最小生成树Prim算法.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b511db373.png",[1109,4922,4923],{},[1334,4924],{"alt":4925,"src":4926},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-te5iPtxy-1641217649149)(myReviewPicture\u002F最小生成树Prim算法2.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b511dbe59.png",[1119,4928,4930],{"id":4929},"_3kruskal算法","3、Kruskal算法",[1109,4932,4933],{},[1334,4934],{"alt":4935,"src":4936},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l7q0KxrC-1641217649149)(myReviewPicture\u002FKruskal算法.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b51210bca.png",[1304,4938,4940],{"id":4939},"三拓扑排序","三、拓扑排序",[1109,4942,4943],{},[1334,4944],{"alt":4945,"src":4946},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UnFfZk1Y-1641217649149)(myReviewPicture\u002F拓扑排序.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b51278094.png",[1109,4948,4949],{},[1334,4950],{"alt":4951,"src":4952},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zr1pgvkl-1641217649150)(myReviewPicture\u002F拓扑排序例题.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b512b3ab5.png",[1119,4954,4956],{"id":4955},"四最短路径","四、最短路径",[1343,4958,4959],{"id":4959},"迪杰斯特拉算法",[1106,4961,4962,4965,4968],{},[1109,4963,4964],{},"通过迪杰斯特拉算法计算图G中的最短路径时，需要指定起点s。",[1109,4966,4967],{},"此外，需要引进两个集合S和U。",[1091,4969,4970,4981,4991,4994,4997],{},[1094,4971,4972,4973,4976,4977,4980],{},"S的作用：记录",[1149,4974,4975],{},"已求出最短路径的顶点","（以及",[1149,4978,4979],{},"相应的最短路径长度","），",[1094,4982,4983,4984,4976,4987,4990],{},"U的作用：记录",[1149,4985,4986],{},"还未求出最短路径的顶点",[1149,4988,4989],{},"该顶点到起点s的距离","）。",[1094,4992,4993],{},"初始时，S中只有起点s；",[1094,4995,4996],{},"U中是除s之外的顶点，并且U中顶点的路径是“起点s到该顶点的路径”。",[1094,4998,4999,5000],{},"然后，从U中找到路径最短的顶点，并将其加入到S中；\n",[1091,5001,5002,5005,5008],{},[1094,5003,5004],{},"接着，更新U中的顶点和顶点对应的路径。",[1094,5006,5007],{},"然后，再从U中找到路径最短的顶点，并将其加入到S中；接着，更新U中的顶点和顶点对应的路径。",[1094,5009,5010],{},"重复上述操作，直到遍历完所有顶点。",[1343,5012,5013],{"id":5013},"具体过程",[1109,5015,5016],{},[1149,5017,5018],{},"1、初始化，所有顶点的距离初始化为无穷大（INFINITY)",[1109,5020,5021],{},[1334,5022],{"alt":1334,"src":5023},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b51308072.png",[1109,5025,5026],{},[1149,5027,5028],{},"2、选定点A，更新（A-A距离设为0)",[1109,5030,5031],{},[1334,5032],{"alt":1334,"src":5033},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b514afd17.png",[1109,5035,5036],{},[1149,5037,5038],{},"3、S集合为{A,B}，考察B的所有邻接点",[1106,5040,5041],{},[1109,5042,5043,5046],{},[1149,5044,5045],{},"为什么选定B加入集合S？",[1149,5047,5048],{},"因为不可能还有其他路径比2还短，我不管经过C到B还是D到B都不可能是路径小于2，所以我们得到了A->B的最短路径",[1109,5050,5051],{},[1334,5052],{"alt":1334,"src":5053},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b514ca7e1.png",[1106,5055,5056],{},[1109,5057,5058],{},"做完这一步，下一步加入集合S的是D\n因为目前A->D的路径长度最短，为3（我已经知道了A直接到D和A经过B到D的路径长度）\n如果A->B->X->D小于min{A->D,A->B->D},那么A->B->X小于min{A->D,A->B->D}，那么加入集合的应该是X，这是矛盾的（接下来的操作都是一样的道理",[1109,5060,5061],{},[1149,5062,5063],{},"4、S集合为{A,B,D}，在U中没有D的邻接点，不操作",[1109,5065,5066],{},[1149,5067,5068],{},"5、S集合为{A,B,D,C}，在U中没有C的邻接点，不操作",[1109,5070,5071],{},[1149,5072,5073],{},"6、S集合为{A,B,D,C,F}，更新",[1109,5075,5076],{},[1334,5077],{"alt":1334,"src":5078},"https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b5151bee3.png",[1109,5080,5081],{},[1149,5082,5083],{},"7、S集合为{A,B,D,C,F,E}，在U中没有E的邻接点，不操作",[1109,5085,5086],{},[1149,5087,5088],{},"8、S集合为{A,B,D,C,F,E,G}，在U中没有G的邻接点，不操作",[1109,5090,5091,1262],{},[1149,5092,5093],{},"9、最终结果如上图",[2586,5095,5097],{"id":5096},"排序","———排序———",[1097,5099,5101],{"id":5100},"一排序的类别","一、排序的类别",[1109,5103,5104],{},[1334,5105],{"alt":5106,"src":5107},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IBiNgFub-1641217649151)(myReviewPicture\u002F排序.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b515628d0.png",[1097,5109,5111],{"id":5110},"_1插入排序","1、插入排序",[1304,5113,5115],{"id":5114},"基本思想","基本思想：",[1109,5117,5118],{},[1334,5119],{"alt":5120,"src":5121},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W5Hwkv7f-1641217649151)(assets\u002F插入排序基本思想.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b5159f561.png",[1119,5123,5125],{"id":5124},"_1直接插入排序","【1】直接插入排序",[1343,5127,5129],{"id":5128},"_1基本思想","（1、基本思想：",[1106,5131,5132,5142,5152,5155],{},[1109,5133,5134,5135,1131,5138,5141],{},"1）、将待排序的一组序列（有N个数）分为",[1149,5136,5137],{},"已排好的",[1149,5139,5140],{},"未排好的"," 2个部分；",[1109,5143,5144,5145,5148,5149,1476],{},"2）、初始状态时，已排序序列",[1149,5146,5147],{},"仅包含第1 个元素","，未排序序列中的元素为除去",[1149,5150,5151],{},"第1 个元素意外的N-1 个元素",[1109,5153,5154],{},"3）、此后，将未排序序列中的元素逐一插入到已排序的序列中；",[1109,5156,5157,5158,5161],{},"4）、如此往复，经过",[1149,5159,5160],{},"N-1 次","插入后，未排序序列中元素个数为0 ，则排序完成。",[1343,5163,5165],{"id":5164},"_2执行过程","（2、执行过程",[1109,5167,5168],{},[1334,5169],{"alt":5170,"src":5171},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7EB0PiaP-1641217649152)(myReviewPicture\u002F直接插入排序例题1.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b514dae70.png",[1109,5173,5174],{},[1334,5175],{"alt":5176,"src":5177},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-59uBl571-1641217649152)(myReviewPicture\u002F直接插入排序2.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b516309b7.png",[1343,5179,5181],{"id":5180},"_3时空效率及稳定性","（3、时空效率及稳定性",[1109,5183,5184],{},[1334,5185],{"alt":5186,"src":5187},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SxUpnfwg-1641217649152)(myReviewPicture\u002F直接插入时空效率.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b5165dced.png",[1119,5189,5191],{"id":5190},"_2希尔排序","【2】希尔排序",[1343,5193,5129],{"id":5194},"_1基本思想-1",[1106,5196,5197,5210,5217],{},[1109,5198,5199,5200,1126,5203,5206,5207,1476],{},"1）、将带排序序列的一组元素按",[1149,5201,5202],{},"一定间隔",[1149,5204,5205],{},"若干序列","分别进行",[1149,5208,5209],{},"插入排序",[1109,5211,5212,5213,5216],{},"2）、开始时设置的“",[1149,5214,5215],{},"间隔","”较大，在每轮排序中，将**”间隔“逐步缩小**",[1109,5218,5219,5220,1262],{},"3）、直到“间隔”为 1，也就到了最后一步，做",[1149,5221,5222],{},"简单插入排序",[1343,5224,5165],{"id":5225},"_2执行过程-1",[1109,5227,5228],{},[1334,5229],{"alt":5230,"src":5231},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-auVhyLOw-1641217649153)(myReviewPicture\u002F希尔排序2.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b51667024.png",[1343,5233,5181],{"id":5234},"_3时空效率及稳定性-1",[1109,5236,5237],{},[1334,5238],{"alt":5239,"src":5240},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ux0GsKAK-1641217649153)(myReviewPicture\u002F希尔排序3.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b5168aecd.png",[1097,5242,5244],{"id":5243},"_2交换排序","2、交换排序",[1304,5246,5115],{"id":5247},"基本思想-1",[1109,5249,5250],{},[1334,5251],{"alt":5252,"src":5253},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZgGwNJn5-1641217649154)(myReviewPicture\u002F交换排序基本思想.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b5172f337.png",[1119,5255,5257],{"id":5256},"_1冒泡排序","【1】冒泡排序",[1343,5259,5129],{"id":5260},"_1基本思想-2",[1109,5262,5263],{},[1334,5264],{"alt":5265,"src":5266},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zJfYxzHa-1641217649155)(myReviewPicture\u002F冒泡排序基本思想.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b5172fa98.png",[1343,5268,5165],{"id":5269},"_2执行过程-2",[1109,5271,5272],{},[1334,5273],{"alt":5274,"src":5275},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-95qkCnr1-1641217649155)(myReviewPicture\u002F冒泡排序执行过程.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b5177290b.png",[1343,5277,5181],{"id":5278},"_3时空效率及稳定性-2",[1109,5280,5281],{},[1334,5282],{"alt":5283,"src":5284},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xRUZHEtW-1641217649155)(myReviewPicture\u002F冒泡排序时空效率.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b51775f1e.png",[1119,5286,5288],{"id":5287},"_2快速排序","【2】快速排序",[1343,5290,5129],{"id":5291},"_1基本思想-3",[1106,5293,5294,5304,5315],{},[1109,5295,5296,5297,5300,5301,1476],{},"1)、将未排序元素根据一个作为",[1149,5298,5299],{},"基准","的“主元（pivot）分为",[1149,5302,5303],{},"两个子序列",[1109,5305,5306,5307,5310,5311,5314],{},"2）、其中一个子序列的记录",[1149,5308,5309],{},"均大于","“主元”，另一个序列则",[1149,5312,5313],{},"均小于","“主元；",[1109,5316,5317,5318,5321,5322,5325],{},"3）、",[1149,5319,5320],{},"递归","地对两个子序列用",[1149,5323,5324],{},"类似的方法","进行排序。",[1343,5327,5165],{"id":5328},"_2执行过程-3",[1109,5330,5331],{},[1334,5332],{"alt":5333,"src":5334},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8y2pVgAJ-1641217649155)(myReviewPicture\u002F快速排序例题1.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b51776a58.png",[1109,5336,5337],{},[1334,5338],{"alt":5339,"src":5340},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q4MhHTt1-1641217649156)(myReviewPicture\u002F插入排序例题2.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b517d5abc.png",[1109,5342,5343],{},[1334,5344],{"alt":5345,"src":5346},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YNkG7K8J-1641217649156)(myReviewPicture\u002F插入排序3.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b51915b7d.png",[1343,5348,5181],{"id":5349},"_3时空效率及稳定性-3",[1109,5351,5352],{},[1334,5353],{"alt":5354,"src":5355},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E3u9CHCI-1641217649156)(myReviewPicture\u002F插入排序时空效率.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b51986b15.png",[1097,5357,5359],{"id":5358},"_3选择排序","3、选择排序",[1304,5361,5115],{"id":5362},"基本思想-2",[1109,5364,5365],{},[1334,5366],{"alt":5367,"src":5368},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6WCpUUz3-1641217649157)(myReviewPicture\u002F选择排序的基本思想.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b519c39ea.png",[1304,5370,5372],{"id":5371},"_1简单选择排序","【1】简单选择排序",[1343,5374,5129],{"id":5375},"_1基本思想-4",[1106,5377,5378,5385,5388],{},[1109,5379,5380,5381,5384],{},"1）、在未排序的序列中选出最小元素和序列的",[1149,5382,5383],{},"首位元素","交换，",[1109,5386,5387],{},"2）、再在剩下的排序序列中再选出最小元素与序列的第2 个位置元素交换",[1109,5389,5390],{},"3）、以此类推，最后形参从小到大的已排序序列。",[1343,5392,5165],{"id":5393},"_2执行过程-4",[1109,5395,5396],{},[1334,5397],{"alt":5398,"src":5399},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eenzDDlH-1641217649158)(myReviewPicture\u002F简单选择排序执行过程.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b519bfb9d.png",[1343,5401,5181],{"id":5402},"_3时空效率及稳定性-4",[1109,5404,5405],{},[1334,5406],{"alt":5407,"src":5408},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HhrGBaPc-1641217649158)(myReviewPicture\u002F简单选择排序3.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b519d7fa4.png",[1304,5410,5412],{"id":5411},"_2堆排序","【2】堆排序",[1343,5414,5129],{"id":5415},"_1基本思想-5",[1106,5417,5418,5430,5439],{},[1109,5419,5420,5421,5429],{},"1）、利用",[1149,5422,5423,5424,5428],{},"最大堆（或最小堆）*",[5425,5426,5427],"em",{},"输出*","堆顶元素","，即最大值（或最小值）；",[1109,5431,5432,5433,5436,5437,1476],{},"2）、将剩余元素重新生成",[1149,5434,5435],{},"最大堆（或最小堆）","，继续输出",[1149,5438,5428],{},[1109,5440,5441],{},"3）、重复此过程，知道全部元素都已输出，得到的输出元素序列即为有序序列",[1343,5443,5445],{"id":5444},"_2执行过程要点","（2、执行过程要点",[1343,5447,5449],{"id":5448},"_1初始化堆的过程","\u003C1>初始化堆的过程",[1109,5451,5452],{},[1334,5453],{"alt":5454,"src":5455},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BUmqOTks-1641217649159)(myReviewPicture\u002F执行过程.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b519d2889.png",[1109,5457,5458],{},[1334,5459],{"alt":5460,"src":5461},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-amUvD16w-1641217649159)(myReviewPicture\u002F堆排序.png)]","https:\u002F\u002Fi-blog.csdnimg.cn\u002Fblog_migrate\u002Fda8a3cffadcfae675e33943af636920d.png",[1106,5463,5464],{},[1109,5465,5466],{},[1149,5467,5468],{},"下面是构建初始堆的过程",[1109,5470,5471],{},[1334,5472],{"alt":5473,"src":5474},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WbussFeE-1641217649160)(myReviewPicture\u002F堆排序2.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b51b18889.png",[1106,5476,5477],{},[1109,5478,5479],{},"下面是堆排序的过程",[1109,5481,5482],{},[1334,5483],{"alt":5484,"src":5485},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jBlnfC3t-1641217649160)(myReviewPicture\u002F堆排序1.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b51b3f894.png",[1109,5487,5488],{},[1334,5489],{"alt":5490,"src":5491},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sWcyGiCK-1641217649160)(assets\u002Fimage-20220103210541040.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b51b4c648.png",[1343,5493,5181],{"id":5494},"_3时空效率及稳定性-5",[1109,5496,5497],{},[1334,5498],{"alt":5499,"src":5500},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GOajy21Q-1641217649161)(myReviewPicture\u002F堆排序空间效率.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b51b4c652.png",[1304,5502,5504],{"id":5503},"_4归并排序","4、归并排序",[1109,5506,5507],{},[1334,5508],{"alt":5509,"src":5510},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g1lLA8Bd-1641217649161)(myReviewPicture\u002F归并排序.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b51bacb3c.png",[1304,5512,5514],{"id":5513},"二各种排序的比较","二、各种排序的比较",[1304,5516,5518],{"id":5517},"口诀快选堆希不稳选堆归基不变","口诀：快选堆希不稳，选堆归基不变",[1106,5520,5521,5524],{},[1109,5522,5523],{},"不稳：说的是 算法不稳定",[1109,5525,5526],{},"不变：说的是 关于移动次数和关键字顺序无关的排序",[1109,5528,5529],{},[1334,5530],{"alt":5531,"src":5532},"[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Srey30WJ-1641217649161)(myReviewPicture\u002F各种排序的比较.png)]","https:\u002F\u002Ffree-img.400040.xyz\u002F4\u002F2024\u002F07\u002F31\u002F66a9b51c46944.png",[1109,5534,5535],{},"end",[1109,5537,5535],{},{"title":1244,"searchDepth":5539,"depth":5539,"links":5540},4,[5541,5543,5559,5573,5592,5610,5611,5612,5679,5692,5725],{"id":1099,"depth":5542,"text":1100},3,{"id":1103,"depth":5542,"text":1104,"children":5544},[5545,5547,5549,5550,5551,5552,5553],{"id":1121,"depth":5546,"text":1122},5,{"id":1125,"depth":5546,"text":5548},"分为随机存取和非随机存取（又称顺序存取）",{"id":1209,"depth":5546,"text":1210},{"id":1213,"depth":5546,"text":1213},{"id":1222,"depth":5546,"text":1223},{"id":1271,"depth":5546,"text":1272},{"id":1306,"depth":5539,"text":1307,"children":5554},[5555,5556,5557,5558],{"id":1310,"depth":5546,"text":1311},{"id":1340,"depth":5546,"text":1341},{"id":1390,"depth":5546,"text":1391},{"id":1420,"depth":5546,"text":1421},{"id":1530,"depth":5542,"text":1531,"children":5560},[5561,5568,5569],{"id":1534,"depth":5539,"text":1535,"children":5562},[5563,5564,5565,5566,5567],{"id":1538,"depth":5546,"text":1539},{"id":1550,"depth":5546,"text":1551},{"id":1580,"depth":5546,"text":1581},{"id":1640,"depth":5546,"text":1641},{"id":1697,"depth":5546,"text":1698},{"id":1742,"depth":5539,"text":1743},{"id":2018,"depth":5539,"text":2019,"children":5570},[5571,5572],{"id":2022,"depth":5546,"text":2023},{"id":2076,"depth":5546,"text":2077},{"id":2144,"depth":5542,"text":2145,"children":5574},[5575,5583,5591],{"id":2148,"depth":5539,"text":2149,"children":5576},[5577,5578,5579,5580,5581,5582],{"id":2165,"depth":5546,"text":2166},{"id":2182,"depth":5546,"text":2183},{"id":2192,"depth":5546,"text":2193},{"id":2202,"depth":5546,"text":2203},{"id":2212,"depth":5546,"text":2213},{"id":2235,"depth":5546,"text":2236},{"id":2262,"depth":5539,"text":2263,"children":5584},[5585,5586,5587,5588,5589,5590],{"id":2274,"depth":5546,"text":2166},{"id":2283,"depth":5546,"text":2183},{"id":2292,"depth":5546,"text":1803},{"id":2301,"depth":5546,"text":2302},{"id":2305,"depth":5546,"text":2213},{"id":2322,"depth":5546,"text":2236},{"id":2331,"depth":5539,"text":2332},{"id":2335,"depth":5542,"text":2336,"children":5593},[5594,5602],{"id":2339,"depth":5539,"text":2340,"children":5595},[5596,5597,5598,5599,5600,5601],{"id":2343,"depth":5546,"text":2344},{"id":2353,"depth":5546,"text":2354},{"id":2363,"depth":5546,"text":1803},{"id":2380,"depth":5546,"text":2381},{"id":2398,"depth":5546,"text":2399},{"id":2408,"depth":5546,"text":2409},{"id":2418,"depth":5539,"text":2419,"children":5603},[5604,5605,5606,5607,5608,5609],{"id":2427,"depth":5546,"text":2428},{"id":2437,"depth":5546,"text":2354},{"id":2446,"depth":5546,"text":1803},{"id":2461,"depth":5546,"text":2462},{"id":2465,"depth":5546,"text":2399},{"id":2474,"depth":5546,"text":2409},{"id":2483,"depth":5542,"text":2484},{"id":2524,"depth":5542,"text":2525},{"id":363,"depth":5613,"text":2588,"children":5614},2,[5615,5630,5639,5649,5655,5660,5661,5668,5673],{"id":2591,"depth":5542,"text":2592,"children":5616},[5617,5618,5624,5625],{"id":2595,"depth":5539,"text":2596},{"id":2623,"depth":5539,"text":2624,"children":5619},[5620,5621,5622,5623],{"id":2627,"depth":5546,"text":2628},{"id":2653,"depth":5546,"text":2654},{"id":2691,"depth":5546,"text":2692},{"id":2723,"depth":5546,"text":2724},{"id":2739,"depth":5539,"text":2740},{"id":2797,"depth":5539,"text":2798,"children":5626},[5627,5628,5629],{"id":2801,"depth":5546,"text":2802},{"id":2818,"depth":5546,"text":2819},{"id":2840,"depth":5546,"text":2841},{"id":2861,"depth":5542,"text":2862,"children":5631},[5632,5633,5634,5635],{"id":2865,"depth":5539,"text":2866},{"id":2874,"depth":5539,"text":2875},{"id":2893,"depth":5539,"text":2894},{"id":2988,"depth":5539,"text":2989,"children":5636},[5637,5638],{"id":3043,"depth":5546,"text":3044},{"id":3065,"depth":5546,"text":3066},{"id":3087,"depth":5542,"text":3088,"children":5640},[5641,5642],{"id":3091,"depth":5539,"text":3092},{"id":3127,"depth":5539,"text":3128,"children":5643},[5644,5645,5646,5647,5648],{"id":3131,"depth":5546,"text":3132},{"id":3149,"depth":5546,"text":3150},{"id":3176,"depth":5546,"text":3177},{"id":3239,"depth":5546,"text":3240},{"id":3325,"depth":5546,"text":3326},{"id":3387,"depth":5542,"text":3388,"children":5650},[5651,5652],{"id":3396,"depth":5539,"text":3397},{"id":3424,"depth":5539,"text":3425,"children":5653},[5654],{"id":3458,"depth":5546,"text":3459},{"id":3537,"depth":5542,"text":3538,"children":5656},[5657,5658,5659],{"id":3541,"depth":5546,"text":3542},{"id":3551,"depth":5546,"text":3552},{"id":3561,"depth":5546,"text":3562},{"id":3571,"depth":5542,"text":3572},{"id":3612,"depth":5542,"text":3613,"children":5662},[5663,5664,5665,5666,5667],{"id":3616,"depth":5539,"text":3617},{"id":3658,"depth":5539,"text":3659},{"id":3702,"depth":5539,"text":3703},{"id":3746,"depth":5539,"text":3747},{"id":3755,"depth":5539,"text":3756},{"id":3779,"depth":5542,"text":3780,"children":5669},[5670,5671,5672],{"id":3896,"depth":5539,"text":3897},{"id":3912,"depth":5539,"text":3913},{"id":3941,"depth":5539,"text":3942},{"id":3993,"depth":5542,"text":3994,"children":5674},[5675,5676,5677,5678],{"id":3997,"depth":5539,"text":3998},{"id":4006,"depth":5539,"text":4007},{"id":4036,"depth":5539,"text":4037},{"id":4045,"depth":5539,"text":4046},{"id":4059,"depth":5613,"text":4060,"children":5680},[5681,5688],{"id":4063,"depth":5542,"text":4064,"children":5682},[5683,5684],{"id":4067,"depth":5539,"text":4068},{"id":4280,"depth":5539,"text":4281,"children":5685},[5686,5687],{"id":4295,"depth":5546,"text":4296},{"id":4371,"depth":5546,"text":4372},{"id":4395,"depth":5542,"text":4396,"children":5689},[5690,5691],{"id":4399,"depth":5539,"text":4400},{"id":4483,"depth":5539,"text":4484},{"id":4498,"depth":5613,"text":4499,"children":5693},[5694,5701,5713,5717],{"id":4502,"depth":5542,"text":4503,"children":5695},[5696,5697,5698,5699,5700],{"id":4523,"depth":5539,"text":4524},{"id":4542,"depth":5539,"text":4543},{"id":4551,"depth":5539,"text":4552},{"id":4560,"depth":5539,"text":4561},{"id":4575,"depth":5539,"text":4576},{"id":4616,"depth":5542,"text":4617,"children":5702},[5703,5708],{"id":4620,"depth":5539,"text":4621,"children":5704},[5705,5706,5707],{"id":4649,"depth":5546,"text":4650},{"id":4673,"depth":5546,"text":4674},{"id":4716,"depth":5546,"text":4717},{"id":4730,"depth":5539,"text":4731,"children":5709},[5710,5711,5712],{"id":4744,"depth":5546,"text":4745},{"id":4753,"depth":5546,"text":4754},{"id":4763,"depth":5546,"text":4764},{"id":4773,"depth":5542,"text":4774,"children":5714},[5715,5716],{"id":4777,"depth":5546,"text":4778},{"id":4832,"depth":5546,"text":4833},{"id":4893,"depth":5542,"text":4894,"children":5718},[5719,5720,5721,5722],{"id":4897,"depth":5546,"text":4898},{"id":4907,"depth":5546,"text":4908},{"id":4929,"depth":5546,"text":4930},{"id":4939,"depth":5539,"text":4940,"children":5723},[5724],{"id":4955,"depth":5546,"text":4956},{"id":5096,"depth":5613,"text":5097,"children":5726},[5727,5728,5734,5740],{"id":5100,"depth":5542,"text":5101},{"id":5110,"depth":5542,"text":5111,"children":5729},[5730],{"id":5114,"depth":5539,"text":5115,"children":5731},[5732,5733],{"id":5124,"depth":5546,"text":5125},{"id":5190,"depth":5546,"text":5191},{"id":5243,"depth":5542,"text":5244,"children":5735},[5736],{"id":5247,"depth":5539,"text":5115,"children":5737},[5738,5739],{"id":5256,"depth":5546,"text":5257},{"id":5287,"depth":5546,"text":5288},{"id":5358,"depth":5542,"text":5359,"children":5741},[5742,5743,5744,5745,5746,5747],{"id":5362,"depth":5539,"text":5115},{"id":5371,"depth":5539,"text":5372},{"id":5411,"depth":5539,"text":5412},{"id":5503,"depth":5539,"text":5504},{"id":5513,"depth":5539,"text":5514},{"id":5517,"depth":5539,"text":5518},"https:\u002F\u002Fpica.zhimg.com\u002F80\u002Fv2-df6d07ad556b4545c44b04ab0cf8aebc_720w.webp","数据结构知识点总结其二","md",true,{"uuid":5753,"slots":5754},"093d8798-1054-11f0-9848-0b39a1ee406d",{},43,{"title":1085,"description":5749},"posts\u002F2024\u002F2024-07-26-数据结构复习其二",[42,40,43],"7EF7GMhfsacK4r1f1U4psMkGW6plrnUbqEkBmG1zsBk",1790443289744]