软件设计师 - 算法思想

文章目录

  • 递归和迭代
  • 软考常见算法思想
  • 分治法
  • 回溯法
  • 贪心法
  • 动态规划法

递归和迭代

递归:函数不断的调用自己,存在终止条件,分为递推和回归两部分;
迭代:不断用变量的旧值递推新值的过程,当前保存的结果作为下一次循环计算的初始值,是代码块的循环;

//这是递归
int funcA(int n)
{if(n > 1)return n+funcA(n-1);else return 1;
}
//这是迭代
int funcB(int n)
{int i,s=0;for(i=1;i<n;i++)s+=i;return s;
}

软考常见算法思想

在这里插入图片描述

分治法

基本思想:分而治之,把一个大的、复杂的问题拆分成若干小的、规模较小的子问题;子问题和原问题具有相同的逻辑结构;子问题可递归拆分;

实现(二分查找法):

//二分查找前,数组已经从小到达排好序public static int binarySearch (int[] arr,int begin,int end ,int target){int result = -1;if(begin>end){return result;}else {result = (begin+end)/2;if(arr[result]==target){return result;}else if(arr[result]<target){return binarySearch(arr,result+1,end,target);}else {return binarySearch(arr,begin,result-1,target);}}}

快速排序:
排序算法实现

回溯法

基本思想:深度优先选优搜索法,按选优条件向前试探以达到目标,当搜索中发现无法达到目标或选择不优时,则退回一步重新试探搜索;搜索过程中动态产生问题的解空间;

实现(迷宫问题):

在这里插入代码片

贪心法

基本思想:不追求最优解,只希望得到较为满意的解。选择对于当前情况最好的抉择,而不考虑整体情况。得到的不一定是最优解

例题:

    //设有n个货物要装入若干个容量为C的集装箱,n个货物的体积分别为:{ },且每个货物的体积都小于等于C,求最少多少个集装箱可以装下n个货物//最先适宜法:首先所有集装箱都是空的,对于所有货物,按照所给的次序,每次将一个货物装入第一个能容纳它的集装箱//最优适宜法:每次把货物装入能够容纳它且目前剩余容量最小的集装箱,使得该货物装入箱子后闲置空间最小

贪心算法实现:

 //最先适宜法:首先所有集装箱都是空的,对于所有货物,按照所给的次序,每次将一个货物装入第一个能容纳它的集装箱public static int firstFit() {//重置箱子容量for (int i = 0; i < box.length; i++) {box[i] = 0;}int sum = 0;//总计需要的 集装箱数量int tempNum = 0;//临时集装箱编号for (int i = 0; i < n; i++) {//对于每一个货物tempNum = 0;//临时集装箱编号重置为0(从第一个集装箱试探装入)while (C - box[tempNum] < goodWeight[i]) {//当前临时编号集装箱,不足以装入货物itempNum++;//换下一个编号的集装箱}box[tempNum] = box[tempNum] + goodWeight[i];//当前货物装入 第一个能容纳它的 集装箱sum = sum > ++tempNum ? sum : tempNum;//最终结果取最大值}return sum;}//最优适宜法:每次把货物装入能够容纳它且目前剩余容量最小的集装箱,使得该货物装入箱子后闲置空间最小public static int bestFit() {//重置箱子容量for (int i = 0; i < box.length; i++) {box[i] = 0;}int sum = 0;//总计需要的 集装箱数量int tempNum = 0;//临时集装箱编号int minCapacity = C; //最小容量for (int i = 0; i < n; i++) {//对于每一个货物minCapacity = C; //最小容量tempNum = 0;//临时集装箱编号重置为0(从第一个集装箱试探装入)for (int j = 0; j < sum + 1; j++) {//允许多扩展一个空的集装箱int temp = C - box[j] - goodWeight[i];//当前集装箱 装入货物后的剩余容量if (minCapacity > temp && temp > 0) {//当前集装箱装入货物后剩余容量 小于 当前最小容量minCapacity = temp;//更新最小容量tempNum = j;//存入货物的集装箱编号}}box[tempNum] = box[tempNum] + goodWeight[i];sum = sum > ++tempNum ? sum : tempNum;//最终结果取最大值}return sum;}

参数初始化:

 //货物数量private static int n;//货物(编号从0开始)体积 数组private static int[] goodWeight;//每个集装箱容量private static int C;//集装箱(编号从0开始) 数组private static int[] box ;public static void main(String[] args) {n = 10;C = 10;goodWeight = new int[]{4, 2, 7, 3, 5, 4, 2, 3, 6, 2};box = new int[n];System.out.println("最先适宜法 : " + firstFit());System.out.println("最优适宜法 : " + bestFit());}

动态规划法

基本思想:与分治法类似,将求解问题分成若干子问题,求解子问题,从子问题得到原问题的解;(01背包最大价值问题):

与分治法区别:
分治法的子问题都具有相同的逻辑结构,相同的问题被求解多次,最后解决原问题的时间是指数级别;
动态规划常用于求解最优问题(固定容量背包最大价值),这类问题可能有很多解,希望找到最优值的解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515843.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

毕业两年升主管,自沉稳而后顾人 对话阿里云MVP陈琦

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 简介&#xff1a; 1993年出生&#xff0c;毕业2年&#xff0c;团队主管&#xff0c;这是我对陈琦产生好奇的原因。但随着他优…

极道创始人吴江:企业级数据系统,初创一样可以做出好产品

随着云、大数据炒作热度褪去&#xff0c;对数据的存储计算技术正在回归理性。在存储这条传统toB市场的赛道上&#xff0c;创业远比toC市场复杂艰难许多。近日&#xff0c;一家以分布式文件存储创业&#xff0c;集合了存储计算与数据分析的初创公司——极道&#xff0c;表示从20…

2020年阿里云年中大促【福利】【选品】全攻略

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 2020年阿里云年中大促活动于6月1日正式上线啦&#xff01;活动时间为&#xff1a;2020年6月1日至2020年6月30日主会场链接&am…

使用Istio进行多集群部署管理(2):单控制平面Gateway连接拓扑

单控制平面拓扑下&#xff0c;多个 Kubernetes 集群共同使用在其中一个集群上运行的单个 Istio 控制平面。控制平面的 Pilot 管理本地和远程集群上的服务&#xff0c;并为所有集群配置 Envoy Sidecar 代理。 集群感知的服务路由 Istio 1.1 中引入了集群感知的服务路由能力&am…

智能制造的灾备问题如何解决?

提起压力、温度校准行业会让大部分非专业人士感到陌生。但实际上&#xff0c;在我们的日常生活中&#xff0c;很多设备都是需要经过压力检测、温度检测、过程信号检测合格之后才正式投放市场使用的&#xff0c; 北京康斯特仪表科技股份有限公司&#xff08;以下简称康斯特&…

疫情下开源数据库逆势增长,新基建下国产数据库迎机遇

2020年5月DB-Engines 数据库流行度排行大家都看了吗&#xff1f; 虽然 Top 10 与上月没有任何变化&#xff0c;但仔细观察本月的排行榜&#xff0c;Oracle 较上月几乎持平&#xff0c;仅微涨 0.02 分&#xff1b;相较而言&#xff0c;MySQL 增长明显&#xff0c;达到 14.29 分…

寻找长沙“科技之星”,CSDN星城大巡礼

2020年&#xff0c;长沙市委主要领导发出“软件产业再出发”的号召&#xff0c;并颁布了软件三年行动计划。今年5月&#xff0c;CSDN作为专业的IT社区&#xff0c;与长沙高新区签约&#xff0c;将全国总部落户长沙&#xff0c;这一战略决策&#xff0c;让CSDN与长沙的联结进一步…

分布式任务调度平台一站式讲解

文章目录一、传统的定时任务1. 传统的定时任务存在那些缺点2. 分布式任务调度3. 定时任务集群幂等性问题二、传统定时任务的实现方案2.1. 多线程2.2. TimeTask2.3. 线程池2.4. SpringBoot注解形式2.5. 基于Quartz三、常⻅分布式定时任务3.1. Quartz3.2. TBSchedule3.3. Elastic…

数据库系统 - 范式

第一范式 关系模式R中&#xff0c;当且仅当所有域只包含原子值&#xff0c;即每个分量都是不可分割的数据项&#xff1b; 第二范式 当且仅当R满足第一范式&#xff0c;且主键为多个属性值组成&#xff0c;且每个非主属性都完全依赖主键&#xff1b; 第三范式 当且仅当R满足…

全球CT影像20秒诊断,阿里云为新冠AI辅助诊断系统加速

新冠病毒全球爆发 2020年注定是不平凡的一年&#xff0c;新型冠状病毒肆虐全球&#xff0c;对于每个人来说都是一场灾难。 根据丁香园统计的数据&#xff0c;截止到2020年5月29日&#xff0c;全球新冠&#xff08;COVID-19&#xff09;累计确诊病例5,593,631人&#xff0c;累计…

麒麟信安操作系统:挖掘场景,与云俱进 ——携手openEuler赋能关键行业应用

12月24日&#xff0c;由中国电子技术标准化研究院、中国软件行业协会、绿色计算产业联盟主办&#xff0c;华为、飞腾、麒麟信安等操作系统厂商协办的操作系统产业峰会在北京成功举行。湖南麒麟信安科技股份有限公司作为华为重点邀请的四家openEuler商业发行版企业代表&#xff…

IDEA中导入VUE后,JS文件爆红解决办法

原因&#xff1a;可能是js版本不兼容的问题&#xff0c;修改如下图: 点击File–>settings&#xff0c;搜索&#xff1a;JavaScript&#xff0c;如图修改

带你一文看懂 Blockchain + NoSQL数据库

来源 | Tyler Mitchell译者 | 火火酱&#xff0c;责编 | Carol图源 | CSDN下载自视觉中国NoSQL数据库和现代区块链分类账都受益于一套共同的原则。由于其二者平台可以相互补充&#xff0c;因此当它们服务于同一应用程序时&#xff0c;能够配合完成多种工作。在本文中&#xff0…

来,一起“八卦”一下数据湖

原文链接 本文为云栖社区原创内容&#xff0c;未经允许不得转载。

从OpenKruise用户疑问开始理解K8s资源更新机制

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 背景 OpenKruise 是阿里云开源的大规模应用自动化管理引擎&#xff0c;在功能上对标了 Kubernetes 原生的 Deployment / Sta…

学霸的奇葩选择,成功不仅靠运气,对话阿里云MVP黄胜蓝

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 简介&#xff1a; 为了逃避高考&#xff0c;他凭借NOIP一等奖成功保送武大&#xff1b;大学时就负责校园门户网站的运维工作&…

CSDN湘苗培优|保持热情,告别平庸

湘苗培优招生进行中在培优中&#xff0c;遇见更好的自己——CSDN高校俱乐部CSDN湘苗培优随着我国信息产业飞速发展&#xff0c;通过常规灌输式培养出来的学员已经不能够满足企业要求。企业更缺乏的是具备自主学习能力、具备综合解决问题能力的高素质技术人才。高素质技术人才需…

对话阿里云总裁张建锋:解密阿里云再生长的动力、合力和张力

文 |《财经》记者 谢丽容 秋冬交替往往在一夜之间。这一年&#xff0c;受疫情的客观影响&#xff0c;数字化新旧时代的交替&#xff0c;从稳步推进&#xff0c;转变为一夜之间——数字化成为中国经济的主要驱动力&#xff0c;变革因为疫情而更加强烈&#xff0c;政府、企业都认…

掌门1对1微服务体系Solar|阿里巴巴Sentinel落地实践

前言 掌门1对1精耕在线教育领域&#xff0c;近几年业务得到了快速发展&#xff0c;但同时也遭遇了“成长的烦恼”。随着微服务数量不断增加&#xff0c;流量进一步暴增&#xff0c;硬件资源有点不堪重负&#xff0c;那么&#xff0c;如何实现更好的限流熔断降级等流量防护措施…

湘苗培优|值不值?效果告诉你

號外高校俱乐部报名ing湘苗培优REC等待优秀的你!湘苗培优参与项目交付企业内推求职简历指导CSDN技术认证你能获得优秀的企业导师&#xff01;志同道合的朋友锻造自己的平台&#xff01;面对面的交流这里有介绍湘苗培优缘起随着我国信息产业飞速发展&#xff0c;通过常规灌输式培…