伪代码基本知识课件
- 格式:ppt
- 大小:393.00 KB
- 文档页数:29
伪代码伪代码(Pseudocode)是一种算法描述语言。
使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal,C,Java,etc)实现。
因此,伪代码必须结构清晰、代码简单、可读性好,并且类似自然语言。
介于自然语言与编程语言之间。
以编程语言的书写形式指明算法职能。
使用伪代码, 不用拘泥于具体实现。
相比程序语言(例如Java, C++,C, Dephi 等等)它更类似自然语言。
它是半角式化、不标准的语言。
可以将整个算法运行过程的结构用接近自然语言的形式(可以使用任何一种你熟悉的文字,关键是把程序的意思表达出来)描述出来。
定义人们在用不同的编程语言实现同一个算法时意识到,他们的实现(注意:这里是实现,不是功能)很不同。
尤其是对于那些熟练于不同编程语言的程序员要理解一个(用其他编程语言编写的程序的)功能时可能很难,因为程序语言的形式限制了程序员对程序关键部分的理解。
这样伪代码就应运而生了。
伪代码提供了更多的设计信息,每一个模块的描述都必须与设计结构图一起出现。
伪代码是一种非正式的,类似于英语结构的,用于描述模块结构图的语言。
应用领域当考虑算法功能(而不是其语言实现)时,伪代码常常得到应用。
伪码中常被用于技术文档和科学出版物中来表示算法,也被用于在软件开发的实际编码过程之前表达程序的逻辑。
伪代码不是用户和分析师的工具,而是设计师和程序员的工具。
计算机科学在教学中通常使用虚拟码,以使得所有的程序员都能理解。
综上,简单的说,让人便于理解的代码。
不依赖于语言的,用来表示程序执行过程,而不一定能编译运行的代码。
在数据结构讲算法的时候用的很多。
伪代码用来表达程序员开始编码前的想法。
语法规则例如,类Pascal语言的伪代码的语法规则是:在伪代码中,每一条指令占一行(else if,例外)。
指令后不跟任何符号(Pascal和C中语句要以分号结尾)。
书写上的“缩进”表示程序中的分支程序结构。
这种缩进风格也适用于if-then-else语句。
伪代码及其实例讲解伪代码(Pseudocode)是一种算法描述语言。
使用伪代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal,C,Java,etc)实现。
因此,伪代码必须结构清晰、代码简单、可读性好,并且类似自然语言。
介于自然语言与编程语言之间。
它以编程语言的书写形式指明算法的职能。
相比于程序语言(例如Java, C++,C, Dephi 等等)它更类似自然语言。
它是半角式化、不标准的语言。
我们可以将整个算法运行过程的结构用接近自然语言的形式(这里,你可以使用任何一种你熟悉的文字,中文,英文等等,关键是你把你程序的意思表达出来)描述出来. 使用伪代码, 可以帮助我们更好的表述算法, 不用拘泥于具体的实现.人们在用不同的编程语言实现同一个算法时意识到,他们的实现(注意:这里是实现,不是功能)很不同。
尤其是对于那些熟练于不同编程语言的程序员要理解一个(用其他编程语言编写的程序的)功能时可能很难,因为程序语言的形式限制了程序员对程序关键部分的理解。
这样伪代码就应运而生了。
当考虑算法功能(而不是其语言实现)时,伪代码常常得到应用。
计算机科学在教学中通常使用虚拟码,以使得所有的程序员都能理解。
综上,简单的说,让人便于理解的代码。
不依赖于语言的,用来表示程序执行过程,而不一定能编译运行的代码。
在数据结构讲算法的时候用的很多。
语法规则例如,类Pascal语言的伪代码的语法规则是:在伪代码中,每一条指令占一行(else if,例外)。
指令后不跟任何符号(Pascal和C中语句要以分号结尾)。
书写上的“缩进”表示程序中的分支程序结构。
这种缩进风格也适用于if-then-else语句。
用缩进取代传统Pascal中的begin和end语句来表示程序的块结构可以大大提高代码的清晰性;同一模块的语句有相同的缩进量,次一级模块的语句相对与其父级模块的语句缩进。
算法的伪代码语言在某些方面可能显得不太正规,但是给我们描述算法提供了很多方便,并且可以使我们忽略算法实现中很多麻烦的细节。
4.10 快速定位——最优二叉搜索树│239•递归求解右子树T(4,4)。
首先读取s[4][4]=4,k=4。
判断如果k−1<4,输出e3为s4的左孩子;判断如果k≥4,输出e4为s4的右孩子,如图4-146所示。
•递归求解右子树T(6,6)。
首先读取s[6][6]=6,k=6。
判断如果k−1<6,输出e5为s6的左孩子;判断如果k≥6,输出e6为s6的右孩子,如图4-147所示。
图4-146 最优解构造过程图4-147 最优解构造过程4.10.4伪代码详解(1)构建最优二叉搜索树采用一维数组p[]、q[]分别记录实结点和虚结点的搜索概率,c[i][j]表示最优二叉搜索树T(i,j)的搜索成本,w[i][j]表示最优二叉搜索树T(i,j)中的所有实结点和虚结点的搜索概率之和,s[i][j]表示最优二叉搜索树T(i,j)的根节点序号。
首先初始化,令c[i][i−1]=0.0,w[i][i−1]=q[i−1],其中i= 1,2,3,…,n+1。
按照递归式计算元素规模是1的{s i}(j=i)的最优二叉搜索树搜索成本c[i][j],并记录最优策略,即树根s[i][j],i=1,2,3,…,n。
按照递归式计算元素规模是2的{s i,s i+1}(j=i+1)的最优二叉搜索树搜索成本c[i][j],并记录最优策略,即树根s[i][j],i=1,2,3,…,n−1。
以此类推,直到求出所有元素{s1,…,s n} 的最优二叉搜索树搜索成本c[1][n]和最优策略s[1][n]。
void Optimal_BST(){for(i=1;i<=n+1;i++){c[i][i-1]=0.0;。