• 关于

    有限序列不可用

    的搜索结果

问题

八大排序算法

排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 常见的内部排序算法有...
琴瑟 2019-12-01 20:54:01 14297 浏览量 回答数 5

回答

选择一门编程语言,例如C之类的。如果不想学编程,就尝试下Excel里面的公式。-------------------------算法的定义 算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。 算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。 一个算法应该具有以下五个重要的特征: 1、有穷性: 一个算法必须保证执行有限步之后结束; 2、确切性: 算法的每一步骤必须有确切的定义; 3、输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件; 4、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的; 5、可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。 计算机科学家尼克劳斯-沃思曾著过一本著名的书《数据结构十算法= 程序》,可见算法在计算机科学界与计算机应用界的地位。 [编辑本段]算法的复杂度 同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。 时间复杂度 算法的时间复杂度是指算法需要消耗的时间资源。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做 T(n)=Ο(f(n)) 因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度(Asymptotic Time Complexity)。 空间复杂度 算法的空间复杂度是指算法需要消耗的空间资源。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。 详见百度百科词条"算法复杂度" [编辑本段]算法设计与分析的基本方法 1.递推法 递推法是利用问题本身所具有的一种递推关系求问题解的一种方法。它把问题分成若干步,找出相邻几步的关系,从而达到目的,此方法称为递推法。 2.递归 递归指的是一个过程:函数不断引用自身,直到引用的对象已知 3.穷举搜索法 穷举搜索法是对可能是解的众多候选解按某种顺序进行逐一枚举和检验,并从众找出那些符合要求的候选解作为问题的解。 4.贪婪法 贪婪法是一种不追求最优解,只希望得到较为满意解的方法。贪婪法一般可以快速得到满意的解,因为它省去了为找最优解要穷尽所有可能而必须耗费的大量时间。贪婪法常以当前情况为基础作最优选择,而不考虑各种可能的整体情况,所以贪婪法不要回溯。 5.分治法 把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。 6.动态规划法 动态规划是一种在数学和计算机科学中使用的,用于求解包含重叠子问题的最优化问题的方法。其基本思想是,将原问题分解为相似的子问题,在求解的过程中通过子问题的解求出原问题的解。动态规划的思想是多种算法的基础,被广泛应用于计算机科学和工程领域。 7.迭代法 迭代是数值分析中通过从一个初始估计出发寻找一系列近似解来解决问题(一般是解方程或者方程组)的过程,为实现这一过程所使用的方法统称为迭代法。 [编辑本段]算法分类 算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法。 算法可以宏泛的分为三类: 有限的,确定性算法 这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。 有限的,非确定算法 这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。 无限的算法 是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。 [编辑本段]举例 经典的算法有很多,如:"欧几里德算法,割圆术,秦九韶算法"。 [编辑本段]算法经典专著 目前市面上有许多论述算法的书籍,其中最著名的便是《计算机程序设计艺术》(The Art Of Computer Programming) 以及《算法导论》(Introduction To Algorithms)。 [编辑本段]算法的历史 “算法”即演算法的大陆中文名称出自《周髀算经》;而英文名称Algorithm 来自于9世纪波斯数学家al-Khwarizmi,因为al-Khwarizmi在数学上提出了算法这个概念。“算法”原为"algorism",意思是阿拉伯数字的运算法则,在18世纪演变为"algorithm"。欧几里得算法被人们认为是史上第一个算法。 第一次编写程序是Ada Byron于1842年为巴贝奇分析机编写求解解伯努利方程的程序,因此Ada Byron被大多数人认为是世界上第一位程序员。因为查尔斯·巴贝奇(Charles Babbage)未能完成他的巴贝奇分析机,这个算法未能在巴贝奇分析机上执行。 因为"well-defined procedure"缺少数学上精确的定义,19世纪和20世纪早期的数学家、逻辑学家在定义算法上出现了困难。20世纪的英国数学家图灵提出了著名的图灵论题,并提出一种假想的计算机的抽象模型,这个模型被称为图灵机。图灵机的出现解决了算法定义的难题,图灵的思想对算法的发展起到了重要作用的。
马铭芳 2019-12-02 01:19:58 0 浏览量 回答数 0

回答

  递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现像.   程序调用自身的编程技巧称为递归( recursion)。   一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。用递归思想写出的程序往往十分简洁易懂。   一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。   注意:   (1) 递归就是在过程或函数里调用自身;   (2) 在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口。   递归算法一般用于解决三类问题:   (1)数据的定义是按递归定义的。(Fibonacci函数)   (2)问题解法按递归算法实现。(回溯)   (3)数据的结构形式是按递归定义的。(树的遍历,图的搜索)   递归的缺点:   递归算法解题的运行效率较低。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。   例子:   #include <iostream.h>   void move (char getone,char putone)   {   cout <<getone<<"-->"<}   void hanoi(int n,char one ,char two ,char three)   {   void move (char getone,char putone );   if (n==1)   move (one,three);   else   {   hanoi(n-1,one,three,two);   move (one ,three);   hanoi(n-1,two,one,three);   }   }   void main()   {   void hanoi(int n ,char one ,char two ,char three);   int m ;   cout <<"Input the numberof disker:";   cin>>m;   cout<<"the steps to moving "<<m<<"diskes   :"<<endl;   hanoi(m,'A','B','C');   }   第二章 递归   2.1 递归的概念   2.2 如何设计递归算法   2.3 典型例题   递归是计算机科学的一个重要概念,递归的方法是程序设计中有效的方法,采用递归编写   程序能是程序变得简洁和清晰.   2.1 递归的概念   1.概念   一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数).   如:   procedure a;   begin   .   .   .   a;   .   .   .   end;   这种方式是直接调用.   又如:   procedure b; procedure c;   begin begin   . .   . .   . .   c; b;   . .   . .   . .   end; end;   这种方式是间接调用.   例1计算n!可用递归公式如下:   1 当 n=0 时   fac(n)={n*fac(n-1) 当n>0时   可编写程序如下:   program fac2;   var   n:integer;   function fac(n:integer):real;   begin   if n=0 then fac:=1 else fac:=n*fac(n-1)   end;   begin   write('n=');readln(n);   writeln('fac(',n,')=',fac(n):6:0);   end.   例2 楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,编一程序计算共有多少种不同的走法.   设n阶台阶的走法数为f(n)   显然有   1 n=1   f(n)={2 n=2   f(n-1)+f(n-2) n>2   可编程序如下:   program louti;   var n:integer;   function f(x:integer):integer;   begin   if x=1 then f:=1 else   if x=2 then f:=2 else f:=f(x-1)+f(x-2);   end;   begin   write('n=');read(n);   writeln('f(',n,')=',f(n))   end.   2.2 如何设计递归算法   1.确定递归公式   2.确定边界(终了)条件   练习:   用递归的方法完成下列问题   1.求数组中的最大数   2.1+2+3+...+n   3.求n个整数的积   4.求n个整数的平均值   5.求n个自然数的最大公约数与最小公倍数   6.有一对雌雄兔,每两个月就繁殖雌雄各一对兔子.问n个月后共有多少对兔子?   7.已知:数列1,1,2,4,7,13,24,44,...求数列的第 n项.   2.3典型例题   例3 梵塔问题   如图:已知有三根针分别用1,2,3表示,在一号针中从小放n个盘子,现要求把所有的盘子   从1针全部移到3针,移动规则是:使用2针作为过度针,每次只移动一块盘子,且每根针上   不能出现大盘压小盘.找出移动次数最小的方案.   程序如下:   program fanta;   var   n:integer;   procedure move(n,a,b,c:integer);   begin   if n=1 then writeln(a,'--->',c)   else begin   move(n-1,a,c,b);   writeln(a,'--->',c);   move(n-1,b,a,c);   end;   end;   begin   write('Enter n=');   read(n);   move(n,1,2,3);   end.   例4 快速排序   快速排序的思想是:先从数据序列中选一个元素,并将序列中所有比该元素小的元素都放到它的右边或左边,再对左右两边分别用同样的方法处之直到每一个待处理的序列的长度为1, 处理结束.   程序如下:   program kspv;   const n=7;   type   arr=array[1..n] of integer;   var   a:arr;   i:integer;   procedure quicksort(var b:arr; s,t:integer);   var i,j,x,t1:integer;   begin   i:=s;j:=t;x:=b;   repeat   while (b[j]>=x) and (j>i) do j:=j-1;   if j>i then begin t1:=b; b:=b[j];b[j]:=t1;end;   while (b<=x) and (i<j) do i:=i+1;   if i<j then begin t1:=b[j];b[j]:=b;b:=t1; end   until i=j;   b:=x;   i:=i+1;j:=j-1;   if s<j then quicksort(b,s,j);   if i<t then quicksort(b,i,t);   end;   begin   write('input data:');   for i:=1 to n do read(a);   writeln;   quicksort(a,1,n);   write('output data:');   for i:=1 to n do write(a:6);   writeln;   end.   练习:   1.计算ackerman函数值:   n+1 m=0   ack(m,n)={ ack(m-1,1) m<>0 ,n=0   ack(m-1,ack(m,n-1)) m<>0,n<>0   求ack(5,4)
知与谁同 2019-12-02 01:25:22 0 浏览量 回答数 0

问题

ZooKeeper介绍、分析、理解

一、ZooKeeper是什么? ZooKeeper is a distributed, open-source coordination service for distributed applications. ...
小柒2012 2019-12-01 21:21:22 11496 浏览量 回答数 2

问题

图解!24张图彻底弄懂九大常见数据结构! 7月22日 【今日算法】

数据结构想必大家都不会陌生,对于一个成熟的程序员而言,熟悉和掌握数据结构和算法也是基本功之一。数据结构本身其实不过是数据按照特点关系进行存储或者组织的集合,特殊的结构在不同的应用场景中往往会带来不一...
游客ih62co2qqq5ww 2020-07-27 13:19:32 6 浏览量 回答数 1

问题

图解九大数据结构 6月13日 【今日算法】

数据结构想必大家都不会陌生,对于一个成熟的程序员而言,熟悉和掌握数据结构和算法也是基本功之一。数据结构本身其实不过是数据按照特点关系进行存储或者组织的集合,特殊的结构在不同的应用场景中往往会带来不一...
游客ih62co2qqq5ww 2020-06-17 13:17:00 29 浏览量 回答数 1

问题

Nginx性能为什么如此吊

Nginx性能为什么如此吊,Nginx性能为什么如此吊,Nginx性能为什么如此吊 (重要的事情说三遍)的性能为什么如此吊!!!         最近几年,web架构拥抱解耦的...
小柒2012 2019-12-01 21:20:47 15038 浏览量 回答数 3
阿里云企业服务平台 陈四清的老板信息查询 上海奇点人才服务相关的云产品 爱迪商标注册信息 安徽华轩堂药业的公司信息查询 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 天籁阁商标注册信息 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 北京芙蓉天下的公司信息查询