1-2问题求解与程序设计_第1页
1-2问题求解与程序设计_第2页
1-2问题求解与程序设计_第3页
1-2问题求解与程序设计_第4页
1-2问题求解与程序设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1-2问题求解与程序设计v第一章绪论程序设计的一般过程数据结构在程序设计中的作用本课程讨论的主要内容学什么?算法在程序设计中的作用1-2-1程序设计的一般过程v第一章绪论程序的作用程序为什么要写程序?程序有什么用呢?人要和计算机有效地交流,必须通过程序二进制的数字世界程序设计的关键程序设计的关键是什么?数据表示:从问题抽象出数据模型,从机外表示转换为机内表示数据处理:设计算法,再将算法转换为程序设计语言对应的程序现实世界问题模型化数据模型抽象语言层常量、变量数据类型表示机器层内存0、1编码翻译现实世界问题形式化算法抽象语言层程序表示机器层机器指令翻译程序设计的一般过程利用计算机求解问题的一般过程?计算机不能分析问题并产生问题的解决方案,必须由人来分析问题、确定解决方案、编写程序,再让计算机执行程序最终获得问题的解。想法抽象模型基本思路算

法数据表示数据处理问

题程

序程序语言编程环境人(设计方案)计算机(执行方案)

问题分析

算法设计

程序实现问

题想法抽象模型基本思路模型化抽象思维数据模型数值问题:数学方程非数值问题:表、树、图等数据结构分析待处理的数据以及数据之间的关系形成问题求解的基本思路计算思维:模型化、形式化、逻辑思维、抽象思维程序设计的一般过程算

法想

法数据表示数据处理抽象思维逻辑思维将数据模型从机外表示转换为机内表示设想计算机是如何一步一步完成这个任务的算法用来描述问题的解决方案,是具体的、机械的操作步骤利用计算机解决问题的最重要一步是将人的想法描述成算法计算思维:模型化、形式化、逻辑思维、抽象思维程序设计的一般过程算

法程

序程序语言编程环境形式化逻辑思维在某种编程环境下,用程序设计语言描述处理的数据数据处理的过程函数定义变量定义计算思维:模型化、形式化、逻辑思维、抽象思维目前的编程语言——高级语言(3GL)计算机的母语:机器语言程序设计语言翻译程序程序设计的一般过程【问题】七桥问题。17世纪的东普鲁士有一座哥尼斯堡城(现在叫加里宁格勒,在波罗的海南岸),城中有一座岛,普雷格尔河的两条支流环绕其旁,并将整个城市分成北区、东区、南区和岛区4个区域,全城共有七座桥将4个城区连接起来,于是,产生了一个有趣的问题:一个人是否能在一次步行中穿越全部的七座桥后回到起点,且每座桥只经过一次。东区北区岛区南区程序设计的一般过程CADB

抽象【想法——抽象模型】可以用A、B、C、D表示4个城区,用7条线表示7座桥,将七桥问题抽象为一个图模型。东区北区岛区南区【想法——基本思路】是否存在欧拉回路的判定规则是:如果没有一个地方通奇数桥,则无论从哪里出发,都能找到欧拉回路(为什么)。程序设计的一般过程【算法——数据表示】设二维数组mat[n][n]存储七桥问题的图模型。

表示0122101121002100ABCDABCDCADB程序设计的一般过程【算法——抽象算法】将求解七桥问题的关键(求与每个顶点相关联的边数)独立出来,设计具体的求解步骤,即设计算法。0122101121002100ABCDABCD算法:EulerCircuit输入:二维数组mat[4][4]输出:通奇数桥的顶点个数count1.count初始化为0;2.下标i

从0~n–1重复执行下述操作:2.1计算第i

行元素之和degree;2.2如果degree为奇数,则count++;3.返回count;程序设计的一般过程【程序】将算法用C++语言的函数定义进行描述。intEulerCircuit(intmat[4][4],intn)/*函数定义,二维数组作为形参*/{inti,j,degree,count=0;for(i=0;i<n;i++)/*依次累加每一行的元素*/{degree=0;for(j=0;j<n;j++)degree=degree+mat[i][j];/*将通过顶点i的桥数求和*/if(degree%2!=0)count++;/*桥数为奇数*/}returncount;/*结束函数,将count返回到调用处*/}程序设计的一般过程问

题想法抽象模型基本思路算

法数据表示数据处理程

序程序语言编程环境算法训练就像思维体操,逐渐提高计算思维能力模型化抽象思维抽象思维逻辑思维形式化逻辑思维问题

想法

算法

程序,正是计算思维的运用过程程序设计的一般过程1-2-2数据结构在程序设计中的作用v第一章绪论编写好程序计算机领域人尽皆知的名言算法+数据结构=程序Algorithm+DataStructures=Programs怎么才能设计出好的程序呢?现实世界问题数据抽象数据模型方法抽象算法数据结构的作用问

题想法数据模型基本思路【握手问题】Smith先生和太太邀请四对夫妻来参加晚宴。每个人来的时候,房间里的一些人都要和其他人握手。当然,每个人都不会和自己的配偶握手,也不会跟同一个人握手两次。之后,Smith先生问每个人和别人握了几次手,他们的答案都不一样。问题是,Smith太太和别人握了几次手?如果能将问题抽象出一个合适的数据模型,则问题可能会变得豁然开朗543210678Smith先生如果能将问题抽象出一个合适的数据模型,则问题可能会变得豁然开朗x+y+z=1005×x+3×y+z/3=100百元买百鸡问题1n=11n=2f(n-1)+f(n-2)n>2f(n)=Fibonacci数列问题更复杂的问题:人口增长、桥梁应力、股票预测、……数据结构的作用基于不同数据模型的算法,其运行效率可能会有很大差别【电话号码查询问题】假设某手机中存储了若干电话号码,如何在手机中查找某人的电话号码?问

题想法数据模型基本思路数据结构的作用基于不同数据模型的算法,其运行效率可能会有很大差别【电话号码查询问题】假设某手机中存储了若干电话号码,如何在手机中查找某人的电话号码?手机电话号码姓名王靓赵刚韩春英李启勇……

电话13833278900133318889991550130222618866672233……同学王靓……

n个元素的数组向左循环移动

i个位置有许多应用会调用这个问题的算法,因此,要求有较高的时间性能和空间性能解法1:先将数组中的前

i

个元素存放在一个临时数组中,再将余下的

n–i

个元素左移

i个位置,最后将前

i

个元素从临时数组复制回原数组中后面的

i

个位置。共需要移动

i+(n–i)+i=i+n

次数组元素,但使用了

i

个额外的存储单元【数组循环左移问题】将一个具有

n个元素的数组向左循环移动

i个位置有许多应用会调用这个问题的算法,因此,要求有较高的时间性能和空间性能解法2:先设计一个函数将数组向左循环移动1个位置,然后再调用该算法

i次。只使用了1个额外的存储单元,但共需要移动

i×n

次数组元素算法的作用【数组循环左移问题】将一个具有

n个元素的数组向左循环移动

i个位置有许多应用会调用这个问题的算法,因此,要求有较高的时间性能和空间性能解法3:将这个问题看作是把数组AB转换成数组BA(A代表数组的前

i个元素,B代表数组中余下的

n–i

个元素),先将A置逆得到A-1B,再将B置逆得到A-1B-1,最后将整个A-1B-1置逆得到(A-1B-1)-1=BAabcdefgcbagfeddefgabc共交换

次数组元素,只使用了1个用来交换的临时单元算法的作用【排序问题】对整型数组r[n]进行非降序排列。【算法】有很多排序算法可以解决这个问题,不同排序算法的运行时间有很大差别,起泡排序和快速排序算法在不同数据规模的运行时间如下表所示,随着数据规模的增长,起泡排序和快速排序运行时间的差别越来越大。算法的作用1-2-4本课程讨论的主要内容v第一章绪论数据模型数据模型数值问题:数学方程非数值问题:表、树、图等数据结构问

题想法抽象模型基本思路算

法数据表示数据处理程

序程序语言编程环境例1-6

为百元买百鸡问题抽象数据模型(《算经》)【问题】鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?x+y+z=1005×x+3×y+z/3=1000≤x≤200≤y≤330≤z≤100【想法——数据模型】设

x、y

z

分别表示公鸡、母鸡和小鸡的个数,则有如下方程组成立:数据模型例1-7为学籍管理问题抽象数据模型如何实现增、删、改、查等功能?各表项之间是什么关系?数据表示——存储学籍表表结构学号姓名性别出生日期籍贯15041001王军男吉林省图们市15041002李明男吉林省吉林市15041003汤晓影女吉林省长春市………199701

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论