此方法通过写出问题的一些特定的例子,分析总结其中的规律。具体而言,就是通过列举少量的特殊情况,经过分析,最后找出一般的关系。
问题与以前莫个算法解决过的问题相似,此时就可以触类旁通,尝试改进原有算法来解决
此方法首先将问题简单化,如改变数据类型、空间大小等,然后尝试着将简化后的问题解决。
为了降低问题的复杂度,很多时候都会将问题逐层分解,最后归结为一些简单的问题,这就是递归法
将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。分治法一般包括以下三个步骤:
1)将问题的实例划分为几个较小的实例,最好最有相等的规模。
2)对这些较小的实例求解,而最常见的方法一般是递归。
3)如歌有必要,合并这些较小问题的解,以得到原始问题的解。
一般而言,时间复杂度越低的算法越高效。而更想达到时间复杂度的高效,很多时候就必须在空间上有所牺牲,用空间来换时间。而用空间换时间最有效的方法就是Hash法、大数组和位图法。
在设计题目时,往往会有一个载体,这个载体便是数据结构。如数组、链表、二叉树和图等,当窄体确定后,可用的算法自然而然就会显现出来。可问题是很多时候并不确定这个载体是什么,当无法确定这个载体时,一般也就很难想到合适的方法了。
当遇到上面的问题时,可以采用最原始的思考问题的方式——轮询法。常考的数据结构与算法一共就几种,如下图
此种方法看似笨拙,却很实用,只要对常见的数据结构与算法烂熟于心,一点都没有问题。
2. 什么叫算法什么叫计算机算法
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法,包含了一些随机输入。
特征
一个算法应该具有以下五个重要的特征:
有穷性(Finiteness)算法的有穷性是指算法必须能在执行有限个步骤之后终止;
确切性(Definiteness)算法的每一步骤必须有确切的定义;
输入项(Input)一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
输出项(Output)一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
可行性(Effectiveness)
算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。
例1:输入矩形的边长,计算并输出矩形面积
输入矩形的边长a和b
面积s=a*b
输出s的值,算法结束
例2:交换两个变量a和b的值
输入两个数a和b
t=a;
a=b;
b=t;
输出变量a和b的值,算法结束
例3:输入3个任意的整数,按从小到大的顺序输出这三个整数
输入三个数a、b和c
如果a>b,就交换a、b的值
如果a>c,就交换a、c的值
如果b>c,就交换b、c的值
输出a、b、c的值,算法结束
例4:输入一个正整数n,输出1+2+3+...+n的和
1)输入n的值
2)s=0;
3)i=1;
4)s=s+i;
5)如果i<n,则i=i+1,转步骤4)
6)输出s的值,算法结束
例5:输入两个正整数a和b,输出它们的最大公约数
1)输入两个数a和b
2)r=a%b;
3)如果r=0,转步骤7)
4)a=b;
5)b=r;
6)转步骤2)
7)输出b的值,算法结束
3. 算法和开发的区别通俗说
简单来说,算法和开发有以下区别:
1. 定义:算法是一套清晰、有序和可执行的步骤,用于解决特定问题或完成特定任务。开发则指的是根据需求,设计、实现和测试软件或系统。
2. 抽象程度:算法通常是一种高度抽象的概念,它描述了问题的解决思路和步骤,而不关注具体的实现细节。开发则注重具体的实施和实现方案,需要考虑编程语言、框架、技术等的使用。
3. 目标:算法旨在解决特定的计算问题,通过优化步骤和算法复杂度来提高效率和性能。开发的目标是根据需求构建可靠、高质量、易维护的软件或系统。
4. 范围:算法可以独立于具体的软件或系统存在,可以在多个应用中共享和重复使用。开发则是为了构建具体的软件或系统,涉及到更广泛的开发流程、工具和技术。
总的来说,算法是一种抽象的问题解决方法,它不依赖于具体的实施方式,而开发则是将算法等概念转化为实际的软件或系统,涉及到更多的工具和技术。算法是开发的基础和灵魂,而开发是将算法等思想付诸实际的过程。
4. 算法和程序的区别
两者区别有定义不同、书写规定不同、实现方式不同。
1、定义不同:算法是对特定问题求解步骤的描述,它是有限序列指令。程序是实现预期目的而进行操作的一系列语句和指令。
2、书写规定不同:程序必须用规定的程序设计语言来写,而算法很随意。
3、实现方式不同:算法是解决问题的思路,程序是解决这些问题所具体编写的代码。
5. 算法和函数的区别是什么》
算法可以理解成完成某个功能的思路
函数可能只是算法的一部分
函数有参数,返回值 计算过程等