首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载
2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试
MPA考试 | 中科院
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT
新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证
华为认证 | Java认证
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格
报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师
人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平
驾驶员 | 网络编辑
卫生资格 | 执业医师 | 执业药师 | 执业护士
会计从业资格考试会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师
注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师
质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师
设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师
城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏
您现在的位置: 考试吧(Exam8.com) > 计算机等级考试 > 计算机二级 > VB > 复习资料 > 正文

计算机等级考试二级VB常用算法(7):排序

来源:考试吧Exam8.com) 2007-1-14 10:26:20 考试吧:中国教育培训第一门户 模拟考场

1、算法说明数组中元素的插入和删除一般是在已固定序列的数组中插入或删除一个元素,使得插入或删除操作后的数组还是有序的。
基本思路:首先要找到插入位置或要删除的元素。
1)        插入






代码如下:
Private Sub Command1_Click()
    Dim a(10) As Integer
    Dim i As Integer, k As Integer
    For i = 0 To 9       '生成数组
        a(i) = i * 3 + 1
    Print a(i);
    Next i
    Print
    Print "插入14"
    For k = 0 To 9       '查找插入14在数组中的位置
        If 14 < a(k) Then Exit For
    Next k
    For i = 9 To k Step -1 '从最后元素开始逐个后移,腾出位置
        a(i + 1) = a(i)
    Next i
    a(k) = 14            '插入数14
    For i = 0 To 10
        Print a(i);
    Next i
    Print
End Sub    
2)        1       4      7      10     13    16     19     22     25    28
 
K


 
删除     代码如下:
Dim a() as integer
….
ReDim a(1 to n)

For i=k+1 to n
a(i-1)=a(i)
Next I
Redim preserve a(1 to n-1)    
2、实战练习 1)        补充代码(2001秋二(8))
         C盘根目录下文件Data4.txt的内容是:2,4,6,8,10,1,3,5,7,9。下面程序的功能是将文件后半部分的奇数分别按序插入到前半部分的适当位置,得到的新数列是:1 2 3 4 5 6 7 8 9 10。(实现方法:第一次调整后的数列是:1 2 4 6 8 10 3 5 7 9第二次调整后的数列是:1 2 3 4 6 8 10 5 7 9)。    
                  Option Explict
                  Private Sub Form_Click()
                           Dim A(10) As Integer,i As Integer,J As Integer
                           Open "c:\Data4.txt" For Input As #12
                           Do   (1) 
                                    J=J+1
                                    Input #12,A(J)
                           Loop
                           Call Insert(A)
                           For i=1 To 10
                                    Print A(i);
                           Next i
                           Print
                           Close #12
                  End Sub    
                  Private Sub Insert(A() As Integer)
                           Dim i As Integer,Putp As Integer,J As Integer
                           Dim Getp As Integer,N As Integer,Tem As Integer
                           N=UBound(A)/2
                           Putp=1
                           Getp=N+1
                           For i=1 To N
                                    Tem=A(Getp)
                                    For J=Getp To Putp +1 Step -1
                                               (2) 
                                    Next J
                                    A(Putp)=Tem
                                    Getp=Getp+1
                                    Putp=  (3) 
                           Next i
                  End Sub    
2)        补充代码(2001春二(8))
         下面程序得功能是将无序数组中相同得数只保留一个,其余得删除,并输出经过删除后的数组元素,删除相同数是通过将该数组元素后面的元素在数组内依次前移替换前一个元素的值实现的。数组各元素的值从文件data.txt中读取。    
                  Option Explict
                  Option Base 1
                  Private Sub Form_Click()
                           Dim I As Integer,J As Integer,K As Integer
                           Dim A()As Integer,T As Integer,M As Integer
                           Open "c:\my documents\2000test\data.txt" For Input As #1
                           Do While  (1) 
                                    I=I+1
                                    Redim Preserve A(I)
                                    Input #1,A(I)
                           Loop
                           M=1:T=  (2) 
                           Do While M<T
                                    I=M+1
                                    Do While I<=T
                                             If A(I)=A(M)Then
                                                      For J=1 To   (3) 
                                                               A(J)=A(J+1)
                                                      Next J
                                                      T=T-1
                                             Else
                                                      I=  (4) 
                                             End If
                                    Loop
                                    M=M+1
                           Loop
                           Redim Preserve A(T)
                           For I=1 To T
                                    Print A(I);
                           Next I
                           Print
                  End Sub

1 2  下一页
文章搜索
版权声明:如果计算机等级考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本计算机等级考试网内容,请注明出处。