计算机算法核心知识点梳理|个人学习笔记(基础 + 高频考点)
计算机算法核心知识点梳理个人学习笔记基础 高频考点目录第一章 绪论1.1 什么是算法1.2 算法的描述1.3 算法的分析1.4重要的问题类型第2章 算法效率分析基础第3章 蛮力法3.1 选择排序和冒泡排序3.1.1选择排序3.1.2 冒泡排序3.2 顺序查找和蛮力字符串匹配3.2.1 顺序查找3.2.2蛮力字符串匹配3.3 最近对和凸包问题的蛮力算法3.3.1 最近问题3.3.2 凸包问题3.4 穷举查找3.5深度优先查找和广度优先查找3.5.1 深度优先查找3.5.2 广度优先查找第4章 减治法4.1 插入排序4.2 拓扑排序4.3生成祝贺对象的算法4.4 减常因子算法4.4.1 折半查找4.4.2 假币问题4.4.3 俄式乘法4.4.4 约瑟夫斯问题4.5减可变规模算法4.5.1 插值查找第五章 分治法5.1 合并排序5.2 快速排序第一章 绪论1.1 什么是算法算法(algorithm)是一系列解决问题的明确指令也就是说对于符合一定规范的输入能够在有限时间内获得要求的输出。观点可以认为算法是问题的程序化解决方案。1.2 算法的描述伪代码(pseudocode)是自然语言和类编程语言组成的混合结构。伪代码往往比自然语言更精确而且用伪代码描述的算法往往会更简洁。用箭头代表赋值操作。1.3 算法的分析效率有两种时间效率(time efficiency),指出算法运行有多快。空间效率(space efficiency),说明算法需要多少额外的存储空间。1.4重要的问题类型排序问题(sorting problem)要求我们按照升序重新排列给定列表中的数据项。查找问题(searching problem)就是在给定的集合或者是多重集它允许多个元素具有相同的值)中找一个给定的值[我们称之为查找键(search key)]。字符串处理也称字符串匹配问题图问题组合问题几何问题类似于点、线、多面体这样的几何对象。数值问题(numerical problem)是另一个广阔的具体应用领域涉及具有连续性的数学问题像解方程和方程组计算定积分以及求函数的值等。第2章 算法效率分析基础不做笔记第3章 蛮力法蛮力法(brute force)是一种简单直接地解决问题的方法常常直接基于问题的描述和所涉及的概念定义。3.1 选择排序和冒泡排序3.1.1选择排序3.1.2 冒泡排序3.2 顺序查找和蛮力字符串匹配3.2.1 顺序查找该算法只是简单地将给定列表中的连续元素和给定的查找键进行比较直到遇到一个匹配的元素成功查找或者在遇到匹配元素前就遍历了整个列表失败查找)。实现顺序查找时常常会使用这样一个小技巧如果我们把查找键添加到列表的末尾那么查找就一定会成功所以不必在算法的每次循环时都检查是否到达了表的末尾。以下是这个增强版本的伪代码。3.2.2蛮力字符串匹配查找字符串第一个字符的位置请注意在这个例子中几乎每做一次字符比较就要移动一次模式的位置。然而最坏的情况比这还要糟得多在移动模式之前算法可能会做足m次比较而n-m1次尝试的每一次都可能会遇到这种情况。因此在最坏的情况下该算法属于O(nm)。3.3 最近对和凸包问题的蛮力算法3.3.1 最近问题最近点对问题要求在一个包含n个点的集合中找出距离最近的两个点。这种处理平面或者高维空间的邻近点的问题在各种计算几何问题当中是最简单的。最近点对问题的一个最重要的应用是统计学中的聚类分析。3.3.2 凸包问题在平面或者高维空间的一个给定点集合中寻找凸包被视为计算几何中最重要的问题之一。定义对于平面上的一个点集合有限的或无限的如果以集合中任意两点p和q为端点的线段都属于该集合我们说这个集合是凸的。凸包问题省略3.4 穷举查找对于组合问题来说穷举查找(exhaustive search)是一种简单的蛮力方法。它要求生成问题域中的每一个元素选出其中满足问题约束的元素然后再找出一个期望元素例如使目标函数达到最优的元素)。注意虽然穷举查找的思想很简单直接但在实现时它常常会要求算法来生成某些组合对象。常见问题旅行商问题背包问题分配问题3.5深度优先查找和广度优先查找3.5.1 深度优先查找深度优先查找可以从任意顶点开始访问图的顶点然后把该顶点标记为已访问。在每次迭代的时候该算法紧接着处理与当前顶点邻接的未访问顶点。如果有若干个这样的顶点可以任意选择一个顶点。但在实际应用中选择哪一个邻接的未访问候选顶点主要是由表示图的数据结构决定的。在我们的例子中我们总是根据顶点的字母顺序来选择顶点。)这个过程一直持续直到遇到一个终点一该顶点的所有邻接顶点都已被访问过。在该终点上该算法沿着来路后退一条边并试着继续从那里访问未访问的顶点。在后退到起始顶点并且起始顶点也是一个终点时该算法最终停了下来。这样起始顶点所在的连通分量的所有顶点都被访问过了。如果未访问过的顶点仍然存在该算法必须从其中任一顶点开始重复上述过程。用一个栈来跟踪深度优先查找的操作是比较方便的。在第一次访问一个顶点时也就是说开始对该顶点的访问时)我们把该顶点入栈当它成为一个终点时也就是说结束对该顶点的访问时)我们把它出栈。深度优先查找树depth-first search forest3.5.2 广度优先查找按照一种同心圆的方式首先访问所有和初始顶点邻接的顶点然后是离它两条边的所有未访问顶点以此类推直到所有与初始顶点同在一个连通分量中的顶点都访问过了为止。如果仍然存在未被访问的顶点该算法必须从图的其他连通分量中的任意顶点重新开始。使用队列注意它和深度优先查找的区别来跟踪广度优先查找的操作是比较方便的。该队列先从遍历的初始顶点开始将该顶点标记为已访问。在每次迭代的时候该算法找出所有和队头顶点邻接的未访问顶点把它们标记为已访问再把它们入队。然后将队头顶点从队列中移去。广度优先查找森林breadth-first search forcest第4章 减治法4.1 插入排序我们考虑如何用减一技术对一个数组A[0.-1]排序。遵循该方法的思路我们假设对较小数组A[0.n-2]排序的问题已经解决了得到了一个大小为n-1的有序数组A0]≤…≤[n-2]。我们如何利用这个较小规模的解并将元素A[n-1]考虑进来来得到原问题的解呢显然我们需要做的就是在这些有序的元素中为A[-1]找到一个合适的位置然后把它插入到那里。一般来说我们可以从右到左扫描这个有序的子数组直到遇到第一个小于等于A[-1]的元素然后把A[n-1]插在该元素的后面。这种算法被称为直接插入排序(straight insertion sort),或者简称为插入排序(insertion sort)。4.2 拓扑排序4.3生成祝贺对象的算法4.4 减常因子算法以上略有时间再做笔记4.4.1 折半查找对于有序数组的查找来说折半查找是一种性能卓越的算法。它通过比较查找键K和数组中间元素A[m]来完成查找工作。如果它们相等算法结束。否则如果KA[m],就对数组的前半部分执行该操作如果KA[m],则对数组的后半部分执行该操作。4.4.2 假币问题4.4.3 俄式乘法4.4.4 约瑟夫斯问题 三问题略4.5减可变规模算法4.5.1 插值查找有时间再做笔记第五章 分治法基本思想将一个规模为n的问题分解为k个规模较小的子问题这些子问题互相独立且原问题相同。递归地解这些子问题然后将各子问题的解合并得到原问题的解。精髓分——将问题分解为规模更小的子问题。治——将这些规模更小的子问题逐个击破。合——将已解决的子问题合并最终得到原问题的解。5.1 合并排序图5.2演示的是用合并排序算法对数列8,3,2,9,7,1,5,4进行排序的操作过程。5.2 快速排序如何系统学习网络安全/黑客网络安全不是「速成黑客」而是守护数字世界的骑士修行。当你第一次用自己写的脚本检测出漏洞时那种创造的快乐远胜于电影里的炫技。装上虚拟机从配置第一个Linux环境开始脚踏实地从基础命令学起相信你一定能成为一名合格的黑客。如果你还不知道从何开始我自己整理的282G的网络安全教程可以分享我也是一路自学走过来的很清楚小白前期学习的痛楚你要是没有方向还没有好的资源根本学不到东西下面是我整理的网安资源希望能帮到你。需要的话可以V扫描下方二维码联系领取~如果二维码失效可以点击下方链接去拿一样的哦【CSDN大礼包】最新网络安全/网安技术资料包~282G无偿分享1.从0到进阶主流攻防技术视频教程包含红蓝对抗、CTF、HW等技术点2.入门必看攻防技术书籍pdf书面上的技术书籍确实太多了这些是我精选出来的还有很多不在图里3.安装包/源码主要攻防会涉及到的工具安装包和项目源码防止你看到这连基础的工具都还没有4.面试试题/经验网络安全岗位面试经验总结谁学技术不是为了赚$呢找个好的岗位很重要需要的话可以V扫描下方二维码联系领取~因篇幅有限资料较为敏感仅展示部分资料添加上方即可获取如果二维码失效可以点击下方链接去拿一样的哦【CSDN大礼包】最新网络安全/网安技术资料包~282G无偿分享

相关新闻

智能驾驶功能术语表

智能驾驶功能术语表

目录 纵向功能横向功能雷达功能视觉功能泊车功能高阶智驾数据闭环 纵向功能 表1:纵向功能列表 英文缩写(全称)中文名称功能描述AEB(Autonomous Emergency Braking)自动紧急制动在可能发生碰撞时自动施加制动FCW&am…

2026/8/11 19:51:09 阅读更多 →
笔记 22 - 5 :彭老师 15章,uboot 启动,linux 挂载 nfs 文件系统

笔记 22 - 5 :彭老师 15章,uboot 启动,linux 挂载 nfs 文件系统

(226) (227) (228) 谢谢

2026/8/11 19:51:09 阅读更多 →
MASPreferences性能优化:提升大型应用偏好设置窗口响应速度的7个技巧

MASPreferences性能优化:提升大型应用偏好设置窗口响应速度的7个技巧

MASPreferences性能优化:提升大型应用偏好设置窗口响应速度的7个技巧 【免费下载链接】MASPreferences Modern implementation of the Preferences window for OS X apps, used in TextMate, GitBox and Mou: 项目地址: https://gitcode.com/gh_mirrors/ma/MASPre…

2026/8/11 19:51:09 阅读更多 →

最新新闻

2024手机网站建设新闻深度解析:为何移动端体验决定企业生死存亡

2024手机网站建设新闻深度解析:为何移动端体验决定企业生死存亡

在这个手指比脑子转得还快的时代,如果你还在纠结“需不需要做个手机网站”,那我只能遗憾地说,你的商业敏感度可能需要去急诊室挂个号了。别急着反驳,咱们先聊聊现实:早上醒来第一件事是什么?不是看天气,不是回邮件,而是摸到枕边的那块冷冰冰的发光板。我们在这块六英寸…

2026/8/13 0:53:34 阅读更多 →
P9751 [CSP-J 2023] 旅游巴士一题的题解

P9751 [CSP-J 2023] 旅游巴士一题的题解

35分 观察到有六七个点ai0&#xff0c;我们选择直接无视其他点&#xff0c;假装小z进入景区时所有道路都能通行了&#xff0c;那么问题就转换成一个简单的广搜了&#xff0c;用一个队列一层一层的把景点压入&#xff0c;当到了终点时就是最省时间的了。 #include <bits/stdc…

2026/8/13 0:51:33 阅读更多 →
码海拾遗 · Java I/O 学习笔记

码海拾遗 · Java I/O 学习笔记

一、标准输入输出&#xff08;控制台&#xff09;1. 标准输出 System.outSystem.out.print() / println() / printf()最常用的控制台输出。javaSystem.out.println("普通输出"); System.out.printf("格式化输出&#xff1a;%d %d %d%n", 3, 5, 3 5);2. …

2026/8/13 0:48:32 阅读更多 →
西南多省市实体行业电销外包落地实测案例汇总

西南多省市实体行业电销外包落地实测案例汇总

优先呼依托自有B24全网呼叫资质、全国运营商AXB属地线路&#xff0c;搭配180‑天AES加密录音完整留存机制&#xff0c;搭建起远程坐席状态监控、通话溯源、效能数据看板一体化管控工具。从通话行为、在线时长、线索产出三个维度约束居家坐席消极怠工行为&#xff0c;适配全国各…

2026/8/13 0:47:32 阅读更多 →
CTF Web信息搜集:工具技巧与实战指南

CTF Web信息搜集:工具技巧与实战指南

1. BUUCTF Web入门&#xff1a;信息搜集的核心思路在CTF竞赛中&#xff0c;Web安全方向的题目往往从信息搜集开始。就像侦探破案需要先收集线索一样&#xff0c;解题的第一步就是全面了解目标系统的信息。BUUCTF作为国内知名的CTF练习平台&#xff0c;其Web入门题目特别适合新手…

2026/8/13 0:47:32 阅读更多 →
恶意爬虫防护与数字资产安全实战指南

恶意爬虫防护与数字资产安全实战指南

1. 恶意爬虫对数字资产的系统性威胁概述在数字化浪潮席卷全球的今天&#xff0c;恶意爬虫已经从单纯的网络爬取工具演变为对企业数字资产构成系统性威胁的"数字窃贼"。不同于传统爬虫仅用于数据收集&#xff0c;现代恶意爬虫往往具备高度伪装性、分布式攻击能力和自动…

2026/8/13 0:47:32 阅读更多 →

日新闻

Visual Studio新建项目解决方案为空:系统性排查与修复指南

Visual Studio新建项目解决方案为空:系统性排查与修复指南

1. 问题现象与本质剖析如果你是一位.NET开发者&#xff0c;或者正准备踏入这个领域&#xff0c;那么Visual Studio&#xff08;后面简称VS&#xff09;绝对是你绕不开的伙伴。但有时候&#xff0c;这个伙伴会跟你开一个不大不小的玩笑&#xff1a;你满怀期待地点击“创建新项目…

2026/8/13 0:00:09 阅读更多 →
长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

说实话,每次提起“长春建设厅网站”这几个字,我心里都挺有感触的。不是因为它有多高大上,也不是因为那里藏着什么不可告人的秘密,恰恰相反,是因为它太“接地气”了,或者说,它是咱们普通人想要在这个城市好好生活、安稳买房时,必须得翻过的一座“数据山”。很多新朋友第…

2026/8/13 0:00:09 阅读更多 →
Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南&#xff1a;RDPWrap终极解决方案 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini 你是否曾为Windows家庭版无法支持多用户远程桌面…

2026/8/13 0:00:09 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑&#xff1a;baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码&#xff08;维护中 rm repo&#xff09; 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/12 1:11:09 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片&#xff1a;Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 1:11:09 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身&#xff0c;而应重视模型外的系统搭建&#xff0c;即Harness。提出AgentModelHarness的实用公式&#xff0c;详细介绍Harness的四个层次&#xff1a;持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/12 1:11:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/11 17:09:45 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/12 1:11:10 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/11 17:09:45 阅读更多 →