VB各种排序方法.ppt

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
筛选法排序 2 1 3 4 6 2 1 3 4 6 不交换 交换 3 1 2 4 6 4 1 2 3 6 交换 交换 6 1 2 3 4 6 1 2 3 4 交换 6 2 1 3 4 交换 交换 6 3 1 2 4 6 4 1 2 3 6 4 1 2 3 交换 6 4 2 1 3 6 4 3 1 2 交换 6 4 3 1 2 交换 6 4 3 2 1 轮比较 轮比较 轮比较 轮比较 第一页,编辑于星期二:十三点 四十一分。 筛选法排序 例:筛选法排序。(设从大到小排序) [分析]:将N个无序数据存放在 数组中,对数组进行N-1轮扫视。 第一轮扫视:将A(1)与A(2)比较,若A(1)A(2),则交换A(1)和A(2)的值;再将A(1)与A(3)、A(4) …… A(N)依次按以上规则比较和交换,第一轮扫视完毕,N个数中最大数存放到A(1)中。 第二轮扫视:将A(2)与A(3)、A(4)…A(N)依次按以上规则比较; 第三轮扫视:将A(3)与A(4)、A(5)…A(N)依次按以上规则比较; 第N-1扫视: 将A(N-1)与A(N)按以上规则比较排序完成。 第二页,编辑于星期二:十三点 四十一分。 筛选法排序 假定待排序的N个数已存放在数组 A 中 1.确定排序需要几轮的比较 For I = 1 To N – 1 Next I 1.确定排序需要几轮的比较 2.进行每一轮的比较 For J = To Next J 1.确定排序需要几轮的比较 2.进行每一轮的比较 3.在每一轮比较中,比较两 个数的大小,根据比较结 果决定是否交换两个数 If A(I) A(J) then T = A( I ) A( I ) = A( J ) A( J ) = T End If I + 1 N Text1 = Text1 Str(A(I)) Text1 = Text1 Str(A(N)) 第三页,编辑于星期二:十三点 四十一分。 筛选法排序 返回 第四页,编辑于星期二:十三点 四十一分。 用元素A(Pointer) 去比较 直接排序 2 4 5 3 6 I : 1 Pointer: 1 6 4 5 3 2 交换 Pointer: 2 交换 Pointer: 3 不交换 交换 Pointer: 5 第一轮比较结束 I ≠ Pointer 则交换 A(I) 、A(Pointer) 即交换A(1)和A(6) 6 4 5 3 2 第一轮比较 第二轮比较 I : 2 Pointer: 2 交换 Pointer: 3 不交换 不交换 第二轮比较结束 I ≠ Pointer 则交换 A(I) 、A(Pointer) 即交换A(2)和A(3) 6 5 4 3 2 第三轮比较 6 5 4 3 2 I : 3 Pointer: 3 不交换 不交换 第三轮比较结束 I = Pointer 则不交换A(I) 、A(Pointer) 第四轮比较 6 5 4 3 2 I : 4 Pointer: 4 不交换 第四轮比较结束 I = Pointer 则不交换A(I) 、A(Pointer) 排序结束 6 5 4 3 2 第五页,编辑于星期二:十三点 四十一分。 直接排序 设待排序的N个数存放在数组 A 中 1.确定排序需要几轮的比较 For I = 1 To N – 1 Next I 1.确定排序需要几轮的比较 2.设置这一轮指针初值 Pointer = I 1.确定排序需要几轮的比较 2.设置这一轮指针初值 3.开始一轮的比较 For J = I + 1 To N Next J If A(Pointer) A(J) Then Pointer = J End If 1.确定排序需要几轮的比较 2.设置这一轮指针初值 3.开始一轮的比较 4.进行比较,根据比较结果 决定是否改变指针的值 1.确定排序需要几轮的比较 2.设置这一轮指针初值 3.开始一轮的比较 4.进行比较,根据比较结果 决定是否改变指针的值 5.一轮的比较结束后,根据指针的值与 I 是否不同,确定是否交换A(I)、A(Pointer) 的值 If I Optionter Then T = A( I ) A( I ) = A( Pointer ) A( Pointer ) = A( I ) End If 第六页,编

文档评论(0)

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

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

1亿VIP精品文档

相关文档