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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(随机排序.doc)为本站会员(nacm35)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

随机排序.doc

1、随机排序的一种算法及其在准考证号生成中的应用曾棕根 1(宁波职业技术学院工学院,浙江 宁波 315800)摘 要:本文提出了除升序排序、降序排序之外的第三种排序随机排序,并将随机排序分为完全随机排序和不完全随机排序两类,最后,进述了随机排序在 Visual Basic 6 和C+下的算法实现及随机排序算法在大规模准考证生成中的应用实例。关键词:排序;随机排序;完全随机排序;不完全随机排序;算法;Visual Basic 6;C+;Random Sort and Its Algorithm EstablishmentZeng Zong-genAbstract: The paper puts fo

2、rward the third kind sort method Random Sort besides sort ascending and sort descending, and divide Random Sort into Full Random Sort and Part Random Sort. In the end, the paper narrates the Algorithm Establishment of Random Sort on Visual Basic 6 and C+ and an application in forming examination num

3、bers.Key Words: Sort; Random Sort; Full Random Sort; Part Random Sort; Algorithm; Visual Basic 6; C+;0 引言对一组数据,除了需要对它们进行常规的升降序排序工作之外,在很多场合下,往往需要将它们的顺序随机打乱,这种操作,笔者称之为随机排序。根据排序后的位置是否完全打乱和部分打乱,随机排序分为两类,一类是待排序的数据在经过随机排序操作后,还可能出现在原先的位置上,这种排序,笔者称之为不完全随机排序;另一类是经过随机排序操作后,待排序数据不会出现在原来的位置上,这种排序,笔者称之为完全随机排序。完全

4、随机排序与不完全随机排序在本质上是一样的,但实现上稍有些不同。本文以完全随机排序为例讲解算法。1 完全随机排序算法有一批数据,共 n 个,依次为 a1,a2,a3,an-1,an,需要对它们进行完全随机排序。排序方法与直接选择排序算法类似,从左边排到右边,即从 ai+1an中随机抽取一个数据与 ai交换(1 i n-1) 。先排序第一个数据 a1:从 a2an中随机抽出一个数据与 a1交换;再排第二个数据 a2:从 a3an中随机抽取一个数据与 a2交换;再排第三个数据 a3:从 a4an中随机抽取一个数据与 a3交换;最后排第 n-1 个数据 an-1:从 anan中随机抽取一个数据与an-

5、1交换;第 n 个数据已不需要排序。这样,总共需要排 n-1 次。从以上的算法分析中可以看出,每个待排序数据都会与其它数据交换位置,所以,每个数据都不会出现在原先的位置上,这是完全随机排序。1 作者简介:曾棕根(1975-) ,男,江西新干人,宁波职业技术学院助教。硕士研究生。22 完全随机排序算法的 Visual Basic 6 实现随机排序的实现是基于随机函数的,它可以用数组很方便地来实现。首先要根据问题的规模来定义数组的大小。如果问题的规模为 10,即有十个数据需要进行随机排序,则需定义大小为 10 个元素的数组,然后将待排的 10 个数据依次存入数组中。这里假定数组定义为 A(10),

6、10 个数据分别为 1,2,3,4,5,6,7,8,9,10。这样有 A(1)=1,A(2)=2,A(3)=3,A(10)=10。接下来,程序就要这十个元素的内容进行完全随机排序。根据完全随机排序原理,先排 A(1)元素:从 A(2)A(10)中随机抽取一个元素与 A(1)交换内容。实现这种随机抽取工作,实质上就是要从2,10之间随机产生一个整数 i,那么 A(i)就成为随机抽取的元素。因此,随机产生x,y之间的一个整数就成为实现完全随机排序算法的核心问题。Visual Basic 6 中产生随机数的函数是 Rnd 函数。但 Rnd 产生的是一个(0,1)之间的随机小数。这样,产生x,y 之间

7、的一个随机整数,应当是通过表达式 Int(Rnd*(y-x+1)+x)产生。本文不证明这个公式。如果要产生(x,y)之间的一个随机整数,很显然,与产生 x-1,y-1之间的一个随机整数是同一个问题。这样,对 1,2,3,4,5,6,7,8,9,10 这十个数据进行完全随机排序的完整程序实现为:Cls 清除窗体上的文字Dim i As IntegerDim p As IntegerDim c As IntegerDim A(10) 问题规模为 10 个数据Randomize Timer 用 Timer 来种随机数种子For i = 1 To 10 将数据赋给数组A(i) = iNext iFor

8、 i = 1 To 9 完全随机排序算法p = Int(Rnd * (10 - (i + 1) + 1) + (i + 1) 产生一个i+1,10之间的随机整数c = A(i): A(i) = A(p): A(p) = c 交换 a(i)与 a(p)Next iFor i = 1 To 10 打印排序后的数据Print A(i);Next i3 完全随机排序算法的 C+实现完全随机排序算法在 C+下可以利用 rand()函数来实现。Rand() 函数产生的是一个0,32767之间的一个随机整数,而 rand()%n(n 为非负整数)则是产生一个0 ,n-1之间的随机整数。这样,要产生一个AFr

9、om ,ATo (AFrom 和 ATo 是非负整数)之间的随机整数,则可用如下这个构造式来产生:rand()%(ATo-AFrom+1)+Afrom下面这段代码实现了对连续整数 110 的随机排序:int i,p,c;int *arr;arr=new int10;/如果分配堆内存不成功,则退出过程3if(!arr)coutRecordCount;Room=new intRecordCount+1;Chair=new intRecordCount+1;j=1;4k=1;for(i=1;iStrToInt(Edit3-Text)j=1;k=k+1;p=1;for(i=1;iEdit3-Text)

10、p=1;/初始化随机数发生器randomize();for(i=1;iFirst();for(i=1;iEdit();ADOQuery1-FieldValues“ExamRoom“=Roomi;ADOQuery1-FieldValues“ExamChair“=Chairi;ADOQuery1-FieldValues“ExamNumber“=DBEdit1-Text + “000“ + IntToStr(Roomi) + “000“ + IntToStr(Chairi);ADOQuery1-Post();ADOQuery1-Next();5delete Room;delete Chair;ADO

11、Query1-First() ;ShowMessage(“本操作成功完成“);5 结束语以上是以完全随机排序的算法实现为例。如果要求对数据进行不完全随机排序,那么,只要从第 i 个到第 n 个数据中随机抽取一个数据与待排序数据(即第 i 个数据)交换即可(1 i n-1) 。随机排序算法简洁、可靠,在诸如洗扑克牌、大规模考试的准考证编排、随机播放曲目列表的生成等等的问题解决中有着特殊的用途。参 考 文 献1谭浩强,BASIC 语言-QBASIC(第五版,修订本)M,北京:科学普及出版社,1998-122赵茜,QBASIC 程序设计M,北京:电子工业出版社,1998-53贺世娟,陈冀川,Visual Basic 6.0 程序设计,北京:中国水利水电出版社,2002-84王燕,面向对象的理论与 C+实践,北京:清华大学出版社,1997-25 谭浩强,C 程序设计(第二版) ,北京:清华大学出版社,1999-126Borland Software Corporation,C+Builder 6 C+Builder Help,20027王育坚,Visual C+面向对象编程教程,2003 年 9 月第 1 版,北京:清华大学出版社8侯俊杰,深入浅出 MFC(第 2 版) ,2001 年 1 月第 2 版,第 16 次印刷,武汉:华中科技大学出版社

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报