ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:168.89KB ,
资源ID:2928710      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2928710.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(易语言算法入门.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

易语言算法入门.docx

1、易语言算法入门易语言算法入门(1)线性表本系列讲座仅供初学编程且能熟练掌握易语言者学习。本讲座只讲一些基本的编程算法和对应概念。如果愿以学,每篇都需细细研读,彻底搞懂。 写讲座很费时间。本人没有太多的业余时间。关键是水平实在有限,文笔实在是自犬,打字速度巨慢,所以讲座将不定期推出。当然,动力还是来自易友的支持和本人对易语言的感谢之情。算法需从头学起,先讲线性表吧。线性表的概念线性表作为最基本的数据结构,在编程中运用很广泛。线性表上的运算是比较简单和常用的,在研究线性表上的运算前,还是先讲讲线性表的有关概念。 何谓线性表? 现实生活中线性表的例子很多。如,英文字母表(A-Z)是线性表,其中每个字

2、母就是一个数据元素(也称结点)。易语言中的一维数组也是线性表。每个数据成员就是结点。可以发现这些结点的之间的特点就像是用一根线一把珍珠串在一起成为一根珍珠链。任何一个珍珠最多和两个珍珠相连。 线性表(Linear List) 是由n(n0)个数据元素(结点)a1,a2,.,an组成的有序序列。其中数据元素的个数n定义为表的长度。当n0时称为空表。常常将非空线性表(n0)记做:(a1,a2,.,an)(排版局限就这样表示吧)。 线性表的逻辑结构前面以讲过,现在用专业的语句给大家描述一下。线性表的逻辑特征,就是其结点的邻接关系。a1称为开始结点,它没有直接前趋(“直接前趋”,是指与它相邻且在它前面

3、的结点。)而仅有一个直接后继,“直接后继”,是指与他相邻且在它后面的结点);an称为终端结点,它没有直接后继,而只有一个直接前趋。其余的内部结点ai(2=i1)的顺序表,其初始有序区的范围是【1,1】无序区的范围是【2,n】。大家能否理解呢?(道理很简单,一个结点自然是有序的。)插入排序的基本思想就是不断增大有序区,减小无序。直到无序区消失。 直接插入排序的原理:每次将无序区的第一个结点插入到有序区中。例,无序数组8,5,6,4,3,9,4,其初始有序区【1,1】,无序区【2,7】,第一次插入运算,将无序区第一个结点“5”查到前面的有序区中。运算后数组为5,8,6,4,3,9,4,有序区为【1

4、,2】无序区为【3,7】。第二次插入运算,将无序区的第一个结点“6”插入到前面的有序区中,运算后的数组为5,6,8,4,3,9,4,其有序区为【1,3】,无序区减小成【4,7】。如此重复,经过6次插入运算,有序区成为【1,7】,无序区消失。此数组成为有序数组。程序代码:子程序:直接插入排序参数:欲操作数组 数据类型:整数型 ,局部变量:结点个数 数据类型:整数型 /:数组的长度局部变量:无序区首 数据类型:整数型 /:指向无序区第一个结点的指针。局部变量:插入点 数据类型:整数型 /:将无序区第一个结点插入到有序区中的位置局部变量:暂存容器 数据类型:整数型 /:暂时存放无序区第一个结点的数据

5、,局部变量:移动点 数据类型:整数型 /:移动数据时的控制变量 结点个数 取数组成员数 (欲操作数组)如果真 (结点个数 1)返回 ()如果真结束变量循环首 (2, 结点个数, 1, 无序区首) /:需要进行n-1次插入运算。 计次循环首 (无序区首 1, 插入点) /:在有序区中寻找插入位置。 如果真 (欲操作数组 无序区首 欲操作数组 插入点) /:此为升序排序的插入条件。 跳出循环 () /:找到了插入位置。如果真结束计次循环尾 ()暂存容器 欲操作数组 无序区首变量循环首 (无序区首, 插入点 1, -1, 移动点) /:前面讲的插入运算欲操作数组 移动点 欲操作数组 移动点 1变量循

6、环尾 ()欲操作数组 插入点 暂存容器变量循环尾 ()本段代码用到了前面讲的查找算法和插入算法。掌握一些基本算法,可以提高编程能力。练习:去掉数组中重复的数据,即数组中没有重复的数据。易语言算法入门(5)排序算法(二)讨论上节未讲完的内容。直接插入排序法的代码在执行过程中,大部分时间是消耗在查找插入点位置和移动结点上。结点的移动是必须的,此类算法是无法减少移动次数的,除非是用新的算法。而每次都从无序区首(即表的第一个结点)开始寻找插入点的过程是完全没有必要的,可以用我们讲过的二分查找法优化此过程。二分查找法我和老鸟都讲过,此处不再重复。以下是实现代码,c语言算法书上是没有的,是俺活学活用的即兴

7、之做。子程序:二分直接插入排序参数:欲操作数组 数据类型:整数型 ,局部变量:结点个数 数据类型:整数型局部变量:无序区首 数据类型:整数型局部变量:插入点 数据类型:整数型局部变量:暂存容器 数据类型:整数型局部变量:移动点 数据类型:整数型局部变量:首位置 数据类型:整数型局部变量:末位置 数据类型:整数型局部变量:中间位置 数据类型:整数型 结点个数 取数组成员数 (欲操作数组)如果真 (结点个数 1)返回 ()如果真结束变量循环首 (2, 结点个数, 1, 无序区首)首位置 1末位置 无序区首 1 判断循环首 (首位置 末位置) 中间位置 取整 (首位置 末位置) 2)如果 (欲操作数

8、组 无序区首 欲操作数组 中间位置) 插入点 中间位置 末位置 中间位置 1 否则 如果 (欲操作数组 无序区首 欲操作数组 中间位置) 首位置 中间位置 1否则 插入点 中间位置 跳出循环 () 如果结束 如果结束 判断循环尾 () 如果真 (插入点 0) 暂存容器 欲操作数组 无序区首变量循环首 (无序区首, 插入点 1, -1, 移动点) 欲操作数组 移动点 欲操作数组 移动点 1 变量循环尾 ()欲操作数组 插入点 暂存容器 插入点 0如果真结束变量循环尾 ()易语言算法入门(5)排序算法(三)上节对直接插入排序进行了优化,我们暂且把优化算法称为二分直接插入排序,这种算法仅仅事对寻找插

9、入点的过程做了优化。如果我们能找到另一中方法,可同为减少寻找插入点的次数和移动结点的次数,就可显著的提高排序的运算速度。本节介绍的希尔排序算法是直接插入排序法的一种变种,它能有效的减少这两个方面的运算量,从而显著的提高排序操作的运算速度。原理: 先取一个小于结点数的整数k作为分组单位,把表上的所有相距k的结点逻辑上看成一组。在个组内进行直接插入排序;减小k的取值,把表上的所有相距k的结点逻辑上看成一组。在个组内进行直接插入排序;重复以上步骤;最后一次k取1,即对整个表做直接插入排序。其中k称为增量,增量的取值集合称为增量表。 例,无序数组4,5,8,2,6,8,9,2,4,5,1,6,1,5,

10、4,2 增量表我们取成“5,3,1”(k的取值集合) 1.当k5为,表上的逻辑分组情况为:【1,6,11。16】【2,7,12】【3,8,13】【4,9。14】【5,10,15】(【 】内均是数组的下标值)。k5为的组内进行直接插入排序过程为:第一组:数组成员分别为“4”,“8”,“1”,“2”。排序后的数组1,5,8,2,6,2,9,2,4,5,4,6,1,5,4,8第二组:数组成员分别为“5”,“9”,“6”。 排序后的数组1,5,8,2,6,2,6,2,4,5,4,9,1,5,4,8第三组:数组成员分别为“8”,“2”,“1”。 排序后的数组1,5,1,2,6,2,6,2,4,5,4,9

11、,8,5,4,8第四组:数组成员分别为“2”,“4”,“5”。 排序后的数组1,5,1,2,6,2,6,2,4,5,4,9,8,5,4,8第五组:数组成员分别为“6”,“5”,“4”。 排序后的数组1,5,1,2,4,2,6,2,4,5,4,9,8,5,6,8此趟运算后数组为1,5,1,2,4,2,6,2,4,5,4,9,8,5,6,8 2.当k3为,表上的逻辑分组情况为:【1,4,7,10,13,16】【2,5,8,11,14】【3,6,9,12,15】(【 】内均是数组的下标值)。k3为的组内进行直接插入排序过程为:第一组:数组成员分别为“1”,“2”,“6”,“5”,“8”,“8”排序后的数组1,5,1,2,4,2,5,2,4,6,4,9,8,5,6,8第二组:数组成员分别为“5”,“4”,“2”,“4”,“6”。排序后的数组1,2,1,2,4,2,5,4,4,6,5,9,8,6,6,8第三组:数组成员分别为“1”,“2”,“4”,“9”,“6”。排序后的数组1,2,1,2,6,2,6,2,4,5,4,6,8,5,9,8此趟运算后数组为1,2,1,2,6,2,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1