《数据结构及算法》第10章循环算法.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 第十章班长评选(循环算法) 第十章 班长评选(循环算法) 内容目标: 循环算法的基本概念。 循环算法的设计要点 班长评选循环算法案例分析 具体到抽象循环算法案例分析 用单向链表实现循环算法案例分析 重难点: 循环算法设计思想以及应用 1.功能描述 2.循环算法的基本概念 基本概念 事实上,在一般情况下只有处理大量数据才借助于计算机,所以算法设计中很重要的工作就是对数据的处理归结成较规范的可重复的“机械化的操作”交给计算机去完成。即将重复处理大量数据的步骤抽象成“循环”或“递归”的模式,设计出可以针对不同规模解决问题的方法。 不同于机器生产产品的“机械化的操作”,计算机进行数据处理不可能是完全相同的重复。所以必须要设计出表现形式不变,但能实现动态处理数据的“机械化的操作”。也就是说,在重复操作中,“循环条件”、:“循环体”都必须是“不变式”,而数据处理对象却是变化的,算法是在渐进地完成处理数据的操作。 算法设计中,一个重要的工作就是从已建立好的数学模型中,构造出“不变式”的“循环条件”、“循环体”。“不变式”主要是依靠变量或数组元素表示的,因为变量名或数组元素是“不变”的,而变量或数组元素中的数据是不断变化的,从而数据处理是动态的、渐进的。 3.1.1业务实现 ---班长评选 算法设计:将所有的学生信息放入到顺序表中,并进行编号标识,编号标识顺序为1,2,3,…,n,当报号到r时,作淘汰操作,将对应的学生编号标识改为-1,如此下去当剩下一个时,即为所要评选的班长,最后输出编号标志不为-1的学生信息即是班长。 数据结构设计:用一维数组的顺序表来保存学生的信息和编号标识。 3.1.2业务实现 ---班长评选 定义学生信息顺序表结点类: 用以记录学生的信息和学生在顺序表中的编号,具体实现如下: public class node {//学生信息顺序表结点类 public Student_info Data; //学生信息对象 public int flag; //学生编号用以记录是否淘汰的标准,若为-1表示已经淘汰 public node() { } } 3.1.3业务实现 ---班长评选 定义学生信息顺序表结点类: 用以记录学生的信息和学生在顺序表中的编号,具体实现如下: public class banzhang { public Link L;//实现班长评选算法的链表对象 public StudentManger Ba=new StudentManger (); //创建数据控制层对象 public node []tp;//实现班长评选算法的顺序表对象 public banzhang() { } public int Link_Init(int n) //单向循环链表的初始化 public Student_info Link_select(int n, int r) {…}//用单向循环链表实现班长评选算法 public int sx_Init(int n) {…}//顺序表的初始化 public Student_info sx_select(int n, int r) {…}//用顺序表实现班长评选算法 } 3.1.4业务实现 ---班长评选 为学生信息顺序表的初始化: 根据所传入的学生总人数,进行学生信息顺序表的初始化,实现的步骤如下: 判断所传入的学生总人数是否超出数据库中总学生数,若是返回0。 为学生信息顺序表分配足够的内存空间。 逐个为学生信息顺序表每个成员进行初始化。 初始化完毕返回1。 public int sx_Init(int n) {//初始化顺序表,输入总的学生人数 if(n>Ba.Max) return 0; tp=new node[n]; for(int i=0;i<n;i++)//为顺序表每个学生信息进行初始化 { tp[i]=new node (); tp[i].Data=Ba.base_info[i]; tp[i].flag=i+1; } return 1 ; } 3.1.5业务实现 ---班长评选 用以实现对给定的学生总人数n和所要淘汰号r,进行班长评选的设计,在这里采用“自顶向下”的方法来设计: 首先:将算法分为三部分,即:学生信息初始化、学生信息淘汰、班长信息显示。 其次: 学生信息初始化包括:学生信息顺序表初始化,局部变量初始化(包括:记录学生报数变量,记录学生淘汰人数变量,记录所访问的学生编号变量)。 学生信息淘汰,确定循环算法结束条件,进行信息淘汰,步骤如下: 学生依次报数,实现报数变量自加。 判断报数号是否与淘汰号r相等,若相等,实现淘汰操作处理,否则继续报数。 判断学生报

文档评论(0)

autohhh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档