11计算机,11-计算机科学与技术

《11-计算机科学与技术》由会员分享,可在线阅读,更多相关《11-计算机科学与技术(23页珍藏版)》请在人人文库网上搜索。

1、计算机软件技术基础,机械工业出版社2007年7月,第一部分 数据结构与算法基础,第1章 算法 第2章 数据结构的基础 第3章 线性表及其存储结构 第4章 栈和对列 第5章 树与二叉树 第7章 查找与排序,数据结构与算法的学习可以帮助我们更好地进行程序设计,数据结构直接关系到算法选择和程序实现效率。 应用 1)语言编译要使用“栈”程序中利用“栈”来实现函数过程的调用; 2)操作系统中要用队列打印队列,当计算机输出的数据用打印机打印时,由于打印机速度慢,此时可设置一个打印队列,将打印任务逐个打印,从而避免数据丢失或打印次序混乱; 3)数据库系统则使用线性表、链表等进行数据管理; 4)人工智能领域依。

2、据问题的差异涉及到诸如广义表、树、各种有向图等;,第1章 算法,1.1 算法的基本概念 1.2算法的描述方式,1.1 算法的基本概念,所谓算法是指解题方案的准确而完整的描述。 对于一个问题,如果可以通过一个计算机程序,在有限的存储空间内,运行有限长的时间而得到正确的结果,则称这个问题是算法可解的。 1.算法的基本特征 1)可行性:算法描述的每一个步骤必须能够实现,且能够达到预期的目的; 2)确定性:算法中的每一个步骤,必须经过明确的定义,在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出,相同的输出; 3)有穷性:算法必须能在有限的时间内做完 即算法必须能在执行有限个步骤之后终。

3、止; 4)输入:具有零个或多个输入,它们是算 法开始前的初始量; 5)输出:至少产生一个输出,它们是与输入 有某种关系的量,是算法的执行结果。,2.算法的基本要素 1)算法中对数据对象的运算和操作 通常,基本运算和操作有以下四类: 算术运算:有加、减、乘、除等运算; 逻辑运算:有“与”、“或”、“非”等运算;,关系运算:有“大于”、“小于”、“等于”、“不等于”等运算; 数据传输:有赋值、输入、输出等操作。,2)算法的控制结构 算法中各操作之间的执行顺序,称为算法的控制结构。算法的控制结构给出了算法的基本框架,它不仅决定了算法中各操作的执行顺序,而且也直接反映了算法的设计是否符合结构化原则。一。

4、个算法一般都可以用顺序、选择、循环三种基本控制结构组合而成。,3. 算法设计的基本方法 算法设计的基本方法有列举法、归纳法、递推、递归、减半递推技术和回溯法。 1)列举法 列举法的基本思想是,根据提出的问题,列举所有的情况,并用问题中给定的条件检验哪些是需要的,哪些是不需要的。因此,列举法常用于解决“是否存在”或“有多少可能”等类型的问题,例如求解不定方程的问题。,2)归纳法 归纳法的基本思想是,通过列举少量的特殊情况,经过分析,最后找出一般的关系。,3)递推 所谓递推,是指从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果。其中初始条件或是问题本身已经给定,或是通过对问题的分析与化简。

5、而确定。,4)递归,人们在解决一些复杂问题时,为了降低问题的复杂程度,一般总是将问题逐层分解,最后归结为一些最简单的问题。这种将问题逐层分解的过程,实际上并没有对问题进行求解。但是当解决了分解到最后的那些最简单的问题后,再沿着原来分解的逆过程逐步进行综合,这就是递归的基本思想。 找伪币:假设16枚金币中有一枚是伪造的,真假金币的区别仅是重量不同,利用一个没有砝码的天平作工具,如何快速找出这枚伪造的金币?,)减半递推技术 所谓“减半”,是指将问题的规模减半,而问题的性质不变;这里所谓“递推”,是指重复“减半”的过程。 猜数游戏,)回溯法 回溯法的基本思想是,通过对问题的分析,找出一个解决问题的线。

6、索,然后沿着这个线索逐步试探,对于每一步的试探,若试探成功,就得到问题的解;若试探失败,就逐步回退,换别的路线再进行试探。,1.2 算法复杂度及算法的描述方式 1.算法复杂度 算法复杂度主要包括算法的时间复杂度和算法的空间复杂度。,1)算法的时间复杂度* 所谓算法的时间复杂度,是指执行算法所需要的计算工作量。 算法的工作量,一般用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数,即 算法的工作量T(n) 其中,n是问题的规模。例如,两个n阶矩阵相乘,所需要的基本运算(即两个实数的乘法)次数是n的函数T(n)。算法如下:,for(i=0;in;i+) /*执行n+1次*。

7、/ for(j=0;jn;j+)/*执行n(n+1)次*/ cij=0; /*执行n2 次*/ for(k=0;kn;k+)/*执行n2(n+1)次*/ cij=cij+aik*bkj; /*执行n3次*/ 一条语句在算法中被重复执行的次数,称为该语句的频度。 这里,T(n)=2n3 + 3 n2 + 2n +1是n的函数,显然,T(n)/n3 2 (当n 时)。 由高等数学中无穷大的比较的知识知,T(n)与n3 的量级(数量级)相同,即时间复杂度T(n)的量级为O(n3),记为T(n)=O(n3)。 在具体分析时,可做如下处理: 若语句很少执行且与规模n无关,则可忽略不计; 若所有语句都与规。

8、模n无关,则即使有上千条语句,其执行时间也不过是一个较大的常数,故时间复杂度的量级也只是O(n0)=O(1);,一般可只考虑与程序规模有关的频度最大的语句,如循环语句的循环体,多重循环的内循环等。,常见时间复杂度的量级有:常数阶O(1)、线性阶O(n)、平方阶O(n2)、指数阶O(2n )、对数阶O(log2n)、线性对数阶O(nlog2n)。通常认为,具有指数阶量级的算法是实际不可计算的,而量级低于平方阶的算法是高效率的。 今后若无特别说明,就将算法时间复杂度的量级,看作算法的时间复杂度。即某算法的时间复杂度是指该算法时间复杂度的量级。,例1-1 说明下列各个程序段的时间复杂度。 /*交换a。

9、和b的内容*/ t=a; a=b; b=t; /*求n以内所有2的幂次数的和,即 1+21+22+2k,2kn */ sum=0; for(i=1;i=n;i*=2) sum+=i; 说明:在程序段中,三条语句的执行次数均为1,与规模n无关,故可知其时间复杂度为O(1)。,在程序段中,执行次数最多的语句是循环体sum+=i,它执行的次数未知,显然不是n次,若设为k次,由于2kn,所以有klog2n故时间复杂度为O(log2n)。,在具体分析一个算法的工作量时,还会存在这样的问题:对于一个固定的规模,算法所执行的基本运算次数,还可能与特定的输入有关,而实际上又不可能将所有可能情况的算法所执行的基。

10、本运算次数都列举出来。例如:在长度为n的一维数组中,采用顺序搜索法查找值为x的元素,在这个问题的算法中,其基本运算(即比较)的次数与具体的被查找(输入)值x有关。考虑到这种情况,通常采用平均性态和最坏情况复杂性两种方式,来确定一个算法的工作量。,平均性态 所谓平均性态,是指在规模为n时,用各种特定输入下的基本运算次数的加权平均值来度量算法的工作量。 设x是所有可能输入中的某个特定输入,p(x)是x出现的概率(即输入为x的概率),,t(x)是算法在输入为x时所执行的基本运算次数,则算法的平均性态定义为: , xDn , Dn表示当规模为 n时,算法执行时所有可能输入的集合。, 最坏情况复杂性 所。

11、谓最坏情况复杂性,是指在规模为n时,算法所执行的基本运算的最大次数,定义为: , xDn 显然W(n)的计算要比A(n)的计算方便得多。,2)算法的空间复杂度 一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。,2.算法的描述方式 任何算法都必须用某种方法描述出来,其中常用的就是语言描述。根据描述语言的不同,算法分三类: 1)程序设计语言算法。采用计算机程序设计语言描述,可直接在计算机上运行,从而使给定问题在有限时间内被机械的求解。,2)伪语言算法。采用伪程序设计语言描述,不能直接在计算机上运行。伪语言介于程序设计语言和自然语言之间,它忽略程序设计语言中一些严格的语法规则和细节描述,因此伪语言描述可突出算法设计的主要方面而不是语法细节。,3)非形式算法。采用自然语言,同时还可使用程序设计语言或伪程序设计语言(如流程控制语句while、for、if等)描述。 算法除了用语言描述外,实际上还有一种图形描述方法,如流程图、N-S图等。,不管算法用什么方法描述,它最终都要转换为程序才能在计算机上运行。容易看出上述几种描述方法的可读性依次增强,但可读性越强,离最终程序的距离越远。本书采用C语言作为描述工具。

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

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

相关文章

Spring新变化

让我们检查一下Spring社区在前几天宣布的一些新版本: Spring Boot 1.0.0.RC1 Spring很高兴地宣布Spring Boot v1.0.0的第一个候选版本。 它包含了先前里程碑中的许多错误修复和增强功能。 二进制文件已发布到Spring Maven存储库 。 使用下载说明和Maven / Gradle坐…

H.264分层结构与码流结构

H.264分层结构 H.264编码器输出的Bit流中,每个Bit都隶属于某个句法元素。句法元素被组织成有层次的结构,分别描述各个层次的信息。 在H.264 中,句法元素共被组织成 序列、图像、片、宏块、子宏块五个层次。在这样的结构中,每一层…

20个很酷的CSS3导航菜单制作教程

CSS3 是对 CSS 规范的一个很大的改善和增强,它使得 Web 开发人员可以很容易的在网站中加入时尚的效果。以前很多需要编写 JavaScript 才能实现的效果,如今只需要简单的写几句 CSS3 代码就能实现。今天这篇文章就向大家推荐20个很酷的CSS3导航菜单制作教程…

金算盘高手论坛资料中心_3D006期 菜鸟论坛精英PK专栏 速来围观!!

点上方“菜鸟选号论坛”→点右上角“...”→选“星标★”每日上午更新,星标置顶与大神不走散苹果是置顶,安卓是星标 点击"菜鸟选号论坛"关注我们论坛明星版块,集全网各路高手之大乘,打造草根明星 展示舞台。同时主要是为…

模拟最后一堂课

前言 如果您已经阅读了其他有关异常模拟的博客文章,则可以通过此链接跳过前奏 。 我被要求汇总一些示例,这些示例如何模拟因其可测试性问题而众所周知的Java结构: 模拟私人方法 模拟最终方法 模拟最后一堂课 模拟构造器 模拟静态方法 …

ajax 浏览器后退,全站Ajax浏览器后退方法

全站Ajax后退有两种方法,浏览器后退按钮加入历史链接。其中一种是常规的Ajax后退,这种后退是带有ajax效果的,要重新请求历史链接页面。另一种是将历史数据保存,后退时取出缓存的数据即可。后者比前者效率要高,所以速度…

java基础day11---空指针异常----引用类型--自定义类型赋值--封装

day111.空指针异常-----属于运行错误-java.long.NullPointerException--原因:当引用名称的值为null时,就不能访问某个对象中的属性或方法热锅非要访问这就出现空指针异常--解决办法:在访问某个对象中的属性或方法之前必须保证该引用名称中存放…

CentOS 7下安装Python3.6

•安装python3.6可能使用的依赖 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel •到python官网找到下载路径, 用wget下载 wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz •解压tgz包 tar -zxvf Python-3.6.4.t…

非常酷!10个基于 HTML5 的字体应用演示网站

HTML5 是现在Web开发领域的热点,更多的开发人员开始使用HTML5来开发交互性强、效果出众的网站和各种应用。这是 HTML5 网站大观系列第四篇,本文与大家分享5个非常酷的基于 HTML5 的字体应用演示网站,一起欣赏。 Web Typography For The Lone…

ntp如何确认与服务器偏差_LED电子时钟显示屏如何实现时间同步统一校时?

LED电子时钟显示屏采用一体式铝合金边框设计,更坚固美观节能环保,更以其简单的操作和稳定的性能,广泛应用于学校、考场、医院、金融、移动通信、石油、电力、交通、工业以及国防等同步时钟系统的显示终端,LED电子时钟显示屏已成为…

jquery ajax下拉联动,基于jQuery Ajax实现下拉框无刷新联动

本文实例为大家分享了jQuery Ajax实现下拉框无刷新联动的具体代码,供大家参考,具体内容如下HTML代码:{Layout null;}using DAL;using System.Data;{AreaDal areaDal new AreaDal();string areaId ViewBag.areaId;DataRow drArea areaDal.…

Java 8新闻

Java 8, b128和Java 8 RC2的第一个候选版本于2月出现,修复了新Comparator API中的一个严重缺陷,该缺陷中其新的thenComparing()方法具有不必要的类型限制。 java.util.Comparator的thenComparing()方法不需要类型U扩展java.lang.Comparable &…

HDP 2.6 requires libtirpc-devel

HDP 2.6 requires libtirpc-devel 个问题,截止 Mustafa Kemal MAYUK 2017年06月30日 06:30 hadoopPowerSystemsHello, I am trying to install HDP 2.6 on RHEL 7.2 ppc64le. Installation over ambari fails due to "Error: Package: hadoop_2_6_0_3_8-hdfs-2…

推荐10款非常有用的 Ajax 插件

这篇文章与大家分享的是10款非常有用的 Ajax 插件,有用于图片的,用于分页的,还有用于导航的。这些作者的想法特别新颖,希望你能从中找到自己需要的插件。 1. AJAX-ZOOM 非常强大的一款插件,可用鼠标滚轮进行缩放&…

luogu P1083 借教室

传送门 小水题吧 二分能处理到的询问即可 用差分维护前x个订单之后的值 最后求一遍前缀和 如果爆负就是有不满足的 复杂度O((mn)lgm) 或者区间加和区间最小值线段树也行(常数略大) Code:(线段树) 1 #include<cstdio>2 #include<cstring>3 #include<cmath>4 #…

svgaps绘制时不能用中文命名吗_设计师需要了解的切图命名规范

2020年8月21日下午4点50分 黄河公园通常我们在界面设计完成之后要切图给到前端开发。初做UI设计时&#xff0c;把重点都放在设计效果图上&#xff0c;对之后的切图命名规范没有很注重。当时我会有一些疑惑&#xff0c;切图命名的原则是什么&#xff1f;直接命名为能表达清楚的名…

hdu-1728(贪心bfs的灵活运用吧)

链接 [https://vjudge.net/contest/256476#problem/D] 题意 给定一个m n (m行, n列)的迷宫&#xff0c;迷宫中有两个位置&#xff0c;gloria想从迷宫的一个位置走到另外一个位置&#xff0c;当然迷宫中有些地方是空地&#xff0c;gloria可以穿越&#xff0c;有些地方是障碍&am…

jquery ajax.then,jQuery动态AJAX Promise链

小编典典解决方案使用for&#xff1a;var array [One, Two, Three];var id array[0];var data getData(id);for (var i 1; i < array.length; i) {// Or only the last "i" will be used(function (i) {data data.then(function() {return getData(array[i])…

分享20个漂亮的DIV CSS标准化站点案例

看到有些网站的代码十分优雅&#xff0c;心想自己什么时候也能写出这么好的代码。其实&#xff0c;这不是一朝一夕能达到的&#xff0c;需要的实践中不断锤炼和提高。我们可以通过分析别人写得好的网页代码来更加快速的提高自己&#xff0c;下面向大家推荐20个基于DIV CSS标准布…

在单独的WAR组件中对SPA资源和API实现进行分区

单页应用程序正Swift吸引人们的注意力&#xff0c;以实现基于Web的丰富&#xff0c;健壮和移动友好的应用程序。 本质上&#xff0c;这需要改变应用程序体系结构&#xff0c;其中整个应用程序用户界面是使用JavaScript来实现的&#xff0c;而服务器端代码则为服务器端应用程序逻…