软件设计师刷题知识点-算法部分
一、分治法
将一个问题分解为规模较小的一些子问题,这些子问题相互独立,且与原来问题形式相同。递归解决这些子问题,并将子问题的解合并得出原问题的解。
- 分解:将原问题分解为一系列子问题
- 解决:递归地解决各个子问题。若子问题足够小,则直接求解。
- 合并:将子问题的结果合并成原问题的解。
1.分治法(递归)
递归,就是在运行中自己调用自己。
如斐波那契数列0,1,1,2,3,5,8…
int F(int n){if(n==0)return 0;if(n==1)return 1;if(n>1)return F(n-1)+F(n-2);}
2.分治法(二分查找)
int Binary_Search(int L[],int low,int high,int x){if(low>high)return -1;else{mid=(low+high)/2;if(x==L[mid])return mid;else if(x>L[mid])return Binary_Search(L,mid+1,high,x);else return Binary_Search(L,low,mid-1,x);}}
二、回溯法
深度优先算法,按选优条件向前搜索。但当搜索到某一步时,发现原先选择并不优或达不到目标,就退一步重新选择。
三、贪心法
总是做出在当前来说是每一步最优的选择,而不从整体上加以考虑。但不一定是最优解。
如解决背包问题:优先考虑单位物品价值最高的情况。
四、动态规划法
将原问题分为若干个子问题。子问题可能不是独立的,把每一个子问题的解都求出来,再根据条件,每一步都进行查表,得出每一步最优解。
大量程序是再构造表,最后输出结果是在查表。
如何区分分治法和动态规划法:动态规划法对于每一步,都要涉及查表。
五、排序
1.直接插入排序
从第二个元素开始,将元素插入前面有序数组的相应位置。
2.希尔排序
首次d=数组长度/2
往后每次d=d/2,直到d=1为止
此时元素达到基本有序,最后再次使用直接插入排序
3.归并排序
问题描述:将两个有序数递增组合并为一个有序递增数组
步骤:
4.冒泡排序
void BubbleSort(int A[],int n){int i,j,temp;for(i=0;i<n-1;i++)for(j=1;j<=n-1-i;j++){if(A[j-1]>A[j]){temp=A[j];A[j]=A[j-1];A[j-1]=temp;}}}
软件设计师刷题知识点-算法部分相关推荐
- 软件设计师刷题与知识点总结 笔记
---------------------------------------------- 本文章中的题目为维普考试平台中的软件设计师的题目(每天都有更新) 本文太长,如需查看某一类别的题,可根据目 ...
- 软件设计师真题知识点(本人刷题笔记)
2021年上半年真题 在嵌入式系统中可以用Flash来代替ROM存储器. 顶层数据流图描述了系统的输入和输出:类型检查在(语义分析)阶段处理. Java语言符合的特征有(采用即时编译)(对象在堆空间分 ...
- 软件设计师刷题——标准化和知识产权
1.软件著作权自软件开发完成之日起产生. 2.智力活动规则和方法是一些人为的规则,如管理规则.游戏规则.统计方法.分类方法和计算方法等.不取得专利权 3.我国授予专利权采用先申请原则,即两个以上的申请 ...
- 软考软件设计师常考知识点
一.软件设计师上午题常考点总结 自己刷题时总结的软件设计师上午题基础知识的常考点,后面的数字为教材上相关知识点所对应的页码.教材为清华大学出版社的软件设计师第5版. 1.海明校验码:Gantt和PER ...
- 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合...
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...
- Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤...
TCP和UDP是两个传输层协议,广泛应用于网络中不同主机之间传输数据.对任何程序员来说,熟悉TCP和UDP的工作方式都是至关重要的.这就是为什么TCP和UDP是一个流行的Java编程面试问题. Jav ...
- 牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类...
不多说,直接上干货! 牛客网Java刷题知识点之关键字static static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个"伪全局"的概 ...
- 牛客网Java刷题知识点之构造函数可以调用一般函数,但是一般函数不可以直接调用构造函数...
不多说,直接上干货! 通过 牛客网Java刷题知识点之构造函数是什么.一般函数和构造函数什么区别呢.构造函数的重载.构造函数的内存图解 我们对构造函数有了一个比较清楚的认识,当我们在创建对象时,我们会 ...
- 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别
不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...
最新文章
- 对学习编译原理的看法
- 正则表达式最常用的符号匹配
- linux suse 共享目录_SUSE Linux 创建NFS共享文件夹
- OC中数组排序的3种方法
- ABP vNext IOC替换原有Service实现
- CV之Haar特征描述算子-人脸检测
- python极简应用_30个Python常用极简代码,拿走就用
- struct interface_今天就谈谈go中的接受 interface 参数,返回 struct
- BigDecimal的保留位数和四舍五入的方法
- SAP物料批次管理配置及操作手册(轉載)
- 简单说一说闩锁效应LUP
- PXE配置-Tftpd64
- 机器学习实战 | 综合项目-电商销量预估进阶方案
- 计算机图形学:DDA(数值微分)画线法
- 初中计算机老师面试自我介绍,信息技术老师自我介绍
- node获取系统字体
- 创建简单的Nape刚体
- 智公网:公务员行测基础考点
- 移动端vue调用照相机及相册
- 【obs】转载:OBS直播严重延迟和卡顿怎么办?