5.3 排序算法的程序实现课件 17张PPT

文档属性

名称 5.3 排序算法的程序实现课件 17张PPT
格式 zip
文件大小 1.7MB
资源类型 教案
版本资源 浙教版
科目 信息技术(信息科技)
更新时间 2019-06-08 17:49:33

图片预览

文档简介

课件17张PPT。VB实现对数据库记录排序思考与讨论:用电情况数据库electricity中存放有某地区所有用户每年度用电情况的相关数据,如何通过VB程序实现对数据库记录排序?获取数据库相关数据数据排序Dim conn As New ADODB.Connection '定义Connection对象实例conn
Dim rs As New ADODB.Recordset '定义Recordset对象实例rs
Dim a(1 To 100) As String '数组a用来保存每个户号
Dim b(1 To 100) As Integer '数组b用于保存每个户号对应的年度用电量
Dim n As Integer '变量n记录用户个数
Private Sub Command1_Click()
conn.ConnectionString = "Provider=microsoft.ace.oledb.12.0;" & "Data Source=" & App.Path & "Electricity.accdb"
'设置conn的数据库连接字符串
conn.Open '打开数据库连接
rs.ActiveConnection = conn '设置rs的ActiveConnection属性,关联conn
rs.Open "select * from electricity" '打开记录集,获取数据
n = 0
Do While Not rs.EOF
n = n + 1
a(n) = rs.Fields("户号")
b(n) = rs.Fields("年度用电量")
List1.AddItem a(n) + " " + Str(b(n))
rs.MoveNext
Loop
rs.Close
conn.Close
End Sub复习:数据库数据获取冒泡排序所谓冒泡排序,形象的说,就是在将一组数据从小到大的顺序排列时,小的数据视为质量较轻,大的数据视为质量较重,小的数据好比水中的气泡,往上方移动,较大的数据好比是石头,往下沉,最重的会沉到底,最轻的会浮到顶,反复进行比较,直到数据列排成有序列。请将下列数据按从大到小的顺序,利用冒泡法排序{30,38,65,97,76,13,27,49}1排序号:实例分析2排序现将8号数据49和7号数据27比较,因为49>27所以,49和27的位置互换,变为:i=1:第一次排序j=8:第一步:8号、7号排序49271376976538304927137697653830t49t=d(8) : d(8)=d(7) : d(7)=tj=7:第二步:7号6号排序4927137697653830现将7号数据49和6号数据13比较,因为49>13所以,49和13的位置互换,变为:4927137697653830t49t=d(7) : d(7)=d(6) : d(6)=tj=6:第三步:比较6、5号数据j=5:第四步比较5、4号数据方法同第三步,因为76<97所以数据顺序不变1327497697653830现将6号数据49和5号数据76比较,因为49<76所以,49和76的位置不互换。1327497697653830j=4 :第五步:比较4、3号数据1327497697653830现将4号数据97和3号数据65比较,因为97>65所以,97和65的位置互换。1327497697653830t 97t=d(4) : d(4)=d(3) : d(3)=tj=3:第六步:比较3、2号数据:1327497665973830现将3号数据97和2号数据38比较,因为97>38所以,97和38的位置互换。1327497665973830t 97t=d(3) : d(3)=d(2) : d(2)=tj=2 第七步:比较2、1号数据1327497665389730现将2号数据97和1号数据30比较,因为97>30所以,97和30的位置互换。1327497665389730t97t=d(2) : d(2)=d(1) : d(1)=t这样就完成了第一次排序,它的基本特征是将最大数排到了最左边,然后再从第8个开始,进行第二次排序,将第二大的数据排到了第二位,反复下去,就可以完成排序。一共要进行7次才能完成。1327497665383097经过第二次排序,数据顺序应该是什么样的?2713496538307697经过第三次呢?2713493830657697算法分析第1次冒泡排序时(i=1) j 从 8 开始到2For j=8 to 2 step -1
if d(j)>d(j-1) then 交换d(j) 和d(j-1)的值第2次冒泡排序时(i=2) j 从 8 开始到3For j=8 to 3 step -1
if d(j) >d(j-1) then 交换d(j) 和d(j-1)的值第3次冒泡排序时(i=3) j 从8 开始到4For j=8 to 4 step -1
if d(j) >d(j-1) then 交换d(j) 和d(j-1)的值当i 从1到7 变化时
每次 j 从8 到i+1 时
d(j)>d(j-1)时,则交换它们第4次冒泡排序时(i=4) j 从 8 开始到5For j=8 to 5 step -1
if d(j) >d(j-1) then 交换d(j) 和d(j-1)的值第5次冒泡排序时(i=5) j 从 8 开始到6For j=8 to 6 step -1
if d(j) >d(j-1) then 交换d(j) 和d(j-1)的值第6次冒泡排序时(i=6) j 从 8 开始到7For j=8 to 7 step -1
if d(j) >d(j-1) then 交换d(j) 和d(j-1)的值第7次冒泡排序时(i=7) j 从 8 开始到8For j=8 to 8 step -1
if d(j) >d(j-1) then 交换d(j) 和d(j-1)的值小结:如果要对有n个元素的数组进行排序,那么要进行________轮冒泡,其中
外循环变量i从 到 变化,
内循环变量j从 到 变化。 n-11n-1ni+1a(1)、a(2)、a(3)、…a(n-2)、a(n-1)、a(n)算法演示总结(以降序为例)数组d(1 to n)
For i = 1 To n-1 ( i:n个数排序共需进行n-1遍加工)
For j = n To i + 1 Step -1 (j :控制元素对比与交换)
if d(j)>d(j-1) then (每一趟从后往前,数据比较)
t=d(j) : d(j)=d(j-1) : d(j-1)=t (满足条件,数据交换)
End If
Next j
Next i思考:如果以升序进行冒泡排序,划线处的程序代码如何修改?课后思考:除了我们本节课采用的冒泡法排序算法之外,是否还有其它的排序算法可以实现,请同学们完成冒泡法排序作业本课后作业并预习下一课选择排序。