专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

算法的理论基础

  第1章算法的基本概念1。1算法的基本概念
  首先,要明白软件程序文档数据结构算法文档(图11),算法数据对象运算和操作控制结构。算法(Algorithm)的概念在计算机科学领域中几乎无处不在,在各种计算机系统的实现中,算法的设计往往处于核心的位置。计算机的问世是20世纪算法是计算机科学的重要基础,就像算盘一样,人们需要为计算机编制各种各样的口诀即算法,才能使其工作。
  11计算机软件和算法的关系
  1。1。1算法的特征
  虽然每天都在和算法打交道,但是能严格地指出什么是算法却不是一件容易的事。算法即在有限步骤内解一个数学问题的过程步骤中常常包括某一操作的重复。更广义地说,一个算法就是解一个问题或实现某一目村的逐步过程。一个算法,就是一个有穷规则的集合,规定了一个解决某特定类型问题的运算序列,此外还应具有如下5个重要特性。1。输入性
  一个算法要具有0个或多个外部量作为算法的输入,这些外部量通常体现为算法中的组变量,有些输入量需要在算法执行过程中输入。从表面上看,有些算法好像没有输入量实际上是输入量已被嵌入算法之中。2。输出性
  一个算法必须具有一个或多个输出,以反映算法对输入数据加工后的结果,没有输出的算法是毫无意义的。3。确定性
  算法的每一个步骤必须具有确定的定义,即每一步要执行的动作是确定的,是无二义性的。在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入得出的输出结果也是相同的。4。有穷性
  对于任何合法的输入值,算法必须在执行有限个步骤之后结束,并且每一步都可以在有限的时间内完成。5。可行性
  算法中描述的操作都可以通过已经实现的基本运算的有限次执行来实现,即算法的具体实现应该能够被计算机执行。1。1。2算法的4个标准
  计算学科则把问题作为自己的研究对象,用计算机来解决问题。在计算机专家的头脑中,世界是一个个要解决的问题集合。假如如下分段函数,要求对用户输入的一个自变量x的值,给出相应的函数值。
  实现分段函数求值功能的过程可以作以下描述。
  输入自变量x的值。
  依据自变量x的值进行判断:
  如果x0,执行x4f(x)操作;
  如果x0,执行x4f(x)操作;
  如果x0,执行4f(x)操作。
  其中,AB表示将表达式A的值赋给变量B。
  输出步骤计算的结果。
  显然,上述描述满足算法的5个重要特征,因此,该描述就是一个算法。在现实社会中,不同的人对于同一问题会有不同的看法或解决方法。同样,在计算机领域,对于同一问题可能存在多种算法也是很自然的事情。例如,对于一批数据的排序问题,就存在多种排序方法判断一个算法的好坏主要依据以下4个标准。1。正确性
  正确性是设计一个算法的首要条件,如果一个算法不正确,其他方面就无从谈起。一个正确的算法是指在合理的数据输入下,能在有限的时间内得出正确的结果。2。可读性
  算法主要是为了人的阅读与交流,其次才是让计算机执行,因此算法应该易于人的理解;另外,晦涩难读的算法易于隐藏较多错误而使实现该算法的程序的调试工作变得更加困难。3。健壮性
  算法应当具备检查错误和对错误进行适当处理的能力。一般而言,处理错误的方法不应是中断程序的执行,而应是返回一个表示错误或错误性质的值,以便在更高的抽象层次上进行处理。4。效率
  效率是指算法执行时所需计算机资源的多少,包括运行时间和存储空间两方面的要求。运行时间和存储空间都与问题的规模有关。存储空间指的是算法执行过程中所需的最大存储空间。
  在设计一个算法时,要从上述4个方面综合考虑。同时还要考虑到算法的使用频率及所使用机器的软硬件环境等因素,这样才能设计出一个好的算法。1。1。3算法的描述形式
  算法的描述形式多种多样,不同的算法描述形式对算法的质量有一定的影响。描述同一个算法可以采用自然语言,流程图,盒图,伪代码,序设计语言等,常用的描述算法方法有如下4种。1。自然语言描述法
  最简单的描述算法的方法是使用自然语言,用自然语言来描述算法的优点是简单且便于人们对算法的理解和阅读,缺点是不够严谨,易产生歧义,当算法比较复杂且包含很多转移分支时,用自然语言描述就不是那么直观清晰了。2。算法框图法
  使用程序流程图、盒图等算法描述工具来描述算法。其特点是简洁)(明了,(便于理解和
  交流。3。伪码语言描述法
  用上述两种方法描述的算法并不能够直接在计算机上执行。为了解决理解与执行之间的矛盾,人们常常使用一种称为伪码语言的描述方法来对算法进行描述。伪码语言介于高级程序设计语言和自然语言之间,它忽略高级程序设计语言中一些严格的语法规则与描述细节,因此它比程序设计语言更容易描述和被人理解,而比自然语言或算法框图更接近程序设计语言。4。高级程序设计语言描述法
  使用特定的可以直接在计算机上执行的程序描述算法。优点是不用转换直接可以编译执
  行,缺点是需要对特定的程序设计语言比较理解。大部分的算法最终是需要通过能够向计算机发送一系列命令的程序来实现的。所谓程序是指对所要解决问题的各个对象和处理规则的描述,或者说是数据结构和算法的描述,因此有人说数据结构算法程序
  程序与算法不同。
  程序可以不满足算法的第4个特性,例如,操作系统,它是在无限循环中执行的程序,因而不是算法。然而可以把操作系统的各种任务看作一些单独的问题,每一个问题由操作系统中的一个子程序通过特定的算法实现,该子程序得到输出结果后便终止。
  算法设计方法主要有分治策略、动态规划、贪心算法、回溯法、分支限界、概率算法等这些将在后面的章节中陆续介绍,并采用C语言来描述算法。C语言的优点是类型丰富语句精练,具有面向对象和面向过程的双重优点,用C来描述算法可使整个算法结构紧凑,可读性强。1。2算法复杂性分析框架
  算法复杂性是算法运行所需要的计算机资源的量,需要时间资源的量称为时间复杂性,需要空间资源的量称为空间复杂性,算法复杂性的度量主要是针对运行该算法所需要的计算机资源的多少。当算法所需要的资源越多,该算法的复杂性越高。反之,当算法所需要的资源越少,算法的复杂性越低。
  算法的时间效率和空间效率都用输入规模的函数进行度量。对于所有的算法,规模更大的输入都需要运行更长的时间。经常使用一个输入规模参数为n的函数来研究算法的效率。选择输入规模的合适量度,要受到所讨论算法的操作细节影响。1。2。1时间复杂度
  通常,对于一个算法的复杂性分析主要是对算法效率的分析,包括衡量其运行速度的时间效率,以及其运行时所需要店用的空间大小。对于算法的时间效率的计算,通常是抛开与计算机硬件、软件有关的因素,仅考虑实现该算法的高级语言程序。
  一般而言,对程序执行的时间复杂度的分析是以分块进行的,先分析程序中的语句,再分析各程序段,最后分析整个程序的执行复杂度,通常以渐进式的O形式来表示算法的时间复杂度。
  渐进式的O形式表示时间复杂度的主要运算规则有如下两种。
  (1)求和规则
  O(f(n))O(g(n))O(max(f(n),g(n))),其中,f(n)和g(n)表示与n有关的一个函数。
  (2)乘法规则
  O(f(n))O(g(n))O(f(n)g(n)),O(cf(n))O(f(n)),c是一个正常数。
  假设T(n)是问题规模n(n为整型数)的函数,算法的时间复杂度可以定义为O(f(n)),记作T(n)O(f(n))。由于随着问题规模n的增长,算法执行时间的增长增长率和f(n)的增长率相同。因此,T(n)也被称为算法的时间复杂度。
  为了便于比较同一问题的还同算法的效率问题,通常的做法是从算法中选取一种对于所研究问题来说是基本运算的原子操作,以该基本操作重复执行的次数作为算法的时间度量单位。例如,对于如下的两个NXN矩阵相乘算法
  for(i0;in;i)
  {
  for(j0;jn;j)
  {
  c〔i〕〔j〕0;
  for(k0;kn;k)
  {
  c〔i〕j〕c〔i〕〔j〕a〔il〔k〕b〔k〕〔j〕;
  }
  }
  }
  第1个i作为循环变量的for语的循环体执行次数为n;第2个j作为循环变量for语句的循环体执行次数为nn;语c〔i〕〔j〕0;的执行次数是
  ;第3个k为循环变量的for语句的循环体执行次数为
  n;语c〔i〕j〕c〔i〕〔j〕a〔il〔k〕b〔k〕〔j〕;的执行次数是
  。除去for循环自身的判断语句执行次数以外(计算算法时间复杂度时,可以忽略不计),该算法的循环体执行总次数为:
  T(n)nnn
  n
  2
  2
  n
  如果根据渐进式O规则,则该算法的时间复杂度为O(n3)。力
  在某些情况下,算法所包含的基本操作重复执行的次数会随着问题的输入数据集不同而不同。例如,下面所示的冒泡排序算法的时间复杂度会随着变量n的取值不同而不同。
  voidbubblesort(inta〔〕)
  {i0;
  do{
  changefalse;
  for(j0;jni1;j)
  {
  if(a〔j〕a〔j1〕)
  {
  tempa〔j〕;
  a〔j〕a〔j1〕;
  a〔j1〕temp;
  changetrue;
  }
  }
  i;
  }while(inchange);
  }
  一般情况下,当讨论时间复杂度时均指最坏情况下的时间复杂度,且时间复杂度考虑只是对于问题规模n的增长率,此时,只需计算出它关于n的增长率或阶即可。如上面所的冒泡排序算法时间复杂度为T(n)O(n(n1)2)O(
  )。
  小规模输入在运行时间上的差别不足以将高效的算法和低效的算法区分开来,当输入规模增大时,算法的效率就体现出来。
  对于给定算法的实现即程序的时间复杂度的分析主要考虑可执行语句的情况,下面是对于程序进行时间复杂度分析的一些基本规则。
  对于简单的输入、输出及赋值语句,执行时间为O(1)。
  对于顺序结构,需要执行一系列语句所用时间可采用渐进式O的求和规则来进行计
  算。
  对于选择结构,它的时间复杂度主要体现在对条件判断后所执行的语句上。如判断语句if(c){sl;}else{s2;},判断语句所需要的执行时间为O(1),执行语句所需要的执行时间为
  O(max(T(s1),T(s2)))
  对于循环结构,它的时间复杂度主要体现在循环体语句和循环条件判断语句上,可以
  利用渐进式O的乘积规则来进行计算。
  对于复杂的算法,可以将它分割成几个容易估算的部分,然后利用渐进式O的求和规则与乘法规则计算整个算法的时间复杂度。
  需要指出的是,顺序结构、选择结构和循环结构是算法的三种基本结构。在进行算法的时间复杂度分析时,重点是对这三种结构的语句进行分析。1。2。2空间复杂度
  一般情况下,一个算法所占用的存储空间包括算法自身、算法的输入、算法的输出及实现算法的程序在运行时所占用空间的总和。
  由于算法的输入和输出所占用的空间基本上是一个确定的值,它们不会随着算法的不同而不同。而算法自身所占用的空间与实现算法的语言和所使用的语句密切相关,如程序越短它所占用的空间就越少。一个算法在运行过程中所占用的空间,特别是算法临时开辟的存储空间单元则是由算法策略及该算法所处理的数据量决定的。因此,对于一个算法的空间复杂度的衡量主要考虑的是算法在运行过程中所需要的存储空间的大小。
  假设S(n)是问题规模n(n为整数)的函数,可以定义算法的空间复杂度为O(f(n)),记作S(n)O(f(n)),与时间复杂度T(n)一样,S(n)也被称为算法的空间复杂度。如上述冒泡排序算法中,其空间复杂度为S(n)O(n)。除非特别说明,空间复杂度也是以最坏情况来分析的。

抗老面霜的尽头是黑绷带黑绷带面霜作为贵妇品牌赫莲娜家的明星产品,只要钱包允许,还是值得一试的。从成分上看,30的玻色因浓度是黑绷带在抗老面霜界站稳脚跟的原因之一。高浓度的添加,能促进胶原蛋白的合成,淡化你和谁做夫妻,命里自有安排文花妖馆对于这个世界,我们每个人都有不同的看法。有的人说世界上的一切都是瞬息万变的,你做的每一个选择,所走的每一条路对应的结局都是不同的。也有人说世界上的一切都是注定的,你做的选择散文人到中年,余生很贵,请勿浪费作者子墨闲下来,品茶,读书,享受一个人的午后时光。读到赫尔曼黑塞说的一段话我的心已不再是春天,我的心已是夏天。我比当年更优雅,更内敛,更深刻,更洗练,也更心存感激。我孤独,但不为寂命好的人,都有三不说的习惯,是什么意思呢所谓命好的人,无非就是指那些一辈子顺风顺水,没吃什么苦,却过上了自己想要的生活的人。有的人说天生的命好,不用奋斗,也可以过上衣食无忧的生活。但是有的人,却是通过自己的努力改变了自己谈习惯与教育人们的思想大多取决于自己的愿望,他们的言论取决于自己的学识和接受的见解,然而他们的行为依照的则是他们的习惯。所以马基雅维利说得好(尽管说的是一件丑恶的事情),无论生性多么坚强,言辞多行诗无名那高高的像擎天柱的是什么?在泥泞的地里滚一身泥没留下足迹在干燥的地面流下的汗水滋地一下干了在荆棘丛中洒下的热血开放出鲜花手是暖的心是热的脚板是起茧的是那颗初心驱使他默默地做着默默地包菜好吃有诀窍,学会这个特色做法,特别开胃下饭,一大盘不够吃包菜好吃有诀窍,学会这个特色做法,特别开胃下饭,一大盘不够吃。包菜富含膳食纤维,能够促进胃肠蠕动,加速粪便的排出,多食能够起到减肥瘦身的功效。同时包菜中含水量比较高,而且富含维生素遇见云和你这个深秋,和达人走进云和的童话世界云和一座美丽温婉的江南小城多的是让人目酣神醉的美景壮观神秘的云和梯田灵动清澈的仙宫湖风光奇异的佛儿岩太多的故事,太多的画卷都在吸引着人们的到来11月18日20日背包客紫漫阿萌Mon河北最美的4个古村落,古朴典雅,你都去过了吗?河北有这4个古村落,主要分布在燕山和太行山的山脉体系中,每一个都古文化底蕴十足,住的房屋基本都是四合院,古朴典雅。很多人说,就是因为有山脉的护佑才让这些古镇古村得以保存,我们一起盘一个神秘的村庄,白天能看到晚上却消失了,至今还是一个谜近些年来出境游已经成了国人一个热门的选择,在生活消费水平。实现了安逸的收入保障之下。人们对于精神。也有了更高的追诉求。在对于中国现在实行免签的国家当中,阿联酋是国人较多喜欢选择出游荆歌黎花梦江南古镇黎里,春来多梨花,故古名梨花里。黎里因为有一间荆歌会客厅,所以它对我来说是一处亲切熟悉的所在。没想到的是,我从千里之外飞来海南昌江,竟然有黎花里这三个字随时与我撞见。黎花里
河南禹州市电力护航桃花节3月的河南禹州市方岗镇,千亩桃树竞相绽放,一片花的海洋。近日,禹州市方岗镇首届桃花文化旅游节在该镇石坑村开幕,漫山粉黛吸引了众多游人齐聚于此,或在桃花丛中轻扶古琴,或在桃林中拍照打抗衰美容作用大吗?是不是要及早做?作用大保养要乘早,不要觉得自己年轻就任意挥霍。要知道25岁是一个分界线。25岁前是保养25岁后就是抗衰了作为女人,一定不能让自己的皮肤过早的出现衰老的迹象。越早保养就越能把自己皮肤深圳地铁上经常看到60多岁的女人穿少女装,你有何看法?这没有什么奇怪的,穿衣戴帽个人所好!每个人都有选择的自由,爱美之心人之皆有,谁不愿意自己打扮的年轻漂亮些呢?我也是喜欢年轻,时尚,漂亮的服装,还特别喜欢自己设计制作旗袍,及改良式旗哈尔滨阿城区玉泉还有多少厂子?玉泉原来那可真是很牛逼的小镇,镇里很多的国企厂,白酒厂一个,水泥厂两个,啤酒厂两个,电缆厂一个,白灰厂一个,化工厂一个,电影院两个,旅游景点有玉泉狩猎场,滑雪场,这还是暂时能想起来公务员已经连续招了这么多年了,未来几年会不会停止招聘?不会的。1公务员的更替公务员不是永远在编的,随着社会的发展和时间的推移,公务员会出现减员,比如死亡退休开除(因违法犯罪等开除公职)辞职(主动辞去公务员编制)辞退(因考核不合格不服从有很多老人,每个月四五千块钱的养老金,但为什么还在打工?谢邀!每月四五千块钱养老金,从数值看不算多。但是,从现实社会看,如果仅是他夫妻二人生活,尚能维持温饱。话又说回来,老人身体健康,一生勤劳,总是闲不住,闲下来总感觉不舒服,自然打打工2023年1月20日IOS的AppStore软件限免7个APP推荐1。正念木鱼空气投篮白噪音情绪减解压软件信息原价6元,中文软件无内购无广告。软件描述电子木鱼解压模拟器,手动自动敲击切换,可调节敲击间隔和设定敲击时间次数。下载链接httpsapp英特尔和AMD处理器比较及第四代新品简评最近在工作中遇到一个问题Intel和AMD到底有什么区别?其实,当下不能简单说到底哪个更好了,大部分人普遍认为Intel会更好,也是选择比较多的,但是就笔者我的工作经历来说,由于从刘国正离开男乒,秦志戬放弃竞聘回到幕后,王皓压力倍增今天我们继续来说一下咱们的国球乒乓球,提起乒乓球,相信各位球迷粉丝一定有自己喜欢的球员以及让大家印象深刻的运动员,里面也包括着曾经为中国乒乓球拿下无数荣誉的运动员,接下来,小编要提WTT多哈挑战赛赵子豪无缘正赛1月17日,赵子豪在比赛中回球。当日,在卡塔尔多哈进行的2023年WTT多哈挑战赛男子单打预赛第四轮比赛中,中国选手赵子豪以0比3不敌斯洛伐克选手皮斯特耶,无缘正赛。新华社发(尼库邱建良说出阿拉佐夫接下来的劲敌,难赢!阿拉佐夫KO苏波邦的比赛,相信仍旧让不少大侠回味无穷。比赛中阿拉佐夫的快打旋风,打得慢热的苏波邦一个措手不及。此战过后,阿拉佐夫下一战和谁打成为了粉丝们关注的焦点。近日,阿拉佐夫在
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网