none
排序号码问题 RRS feed

  • 问题

  • 在网上找到一个关于数字排序的代码,不过看不懂。。请各位大大指教

     

    dim num as integer={4,3,5,1,9}

     

    for i =0 to a.length-1

     for j=i+1 to a.length-1

     if a(j)<a(i) then

    t=a(j)

    a(j)=a(i)

    a(i)=t

    end if

    next j

    next i

    1. 不知道是不是完整的代码,我看不太懂??如不完整,请帮忙修改。。。

    2. 最终的结果是什么?可以用什么代码把排序好的结果显示出来?


    • 已编辑 ckjason 2012年1月7日 6:31
    2012年1月7日 6:30

答案

  • 选择排序法,规范化写法如下(结果:从大到小排列输出)

    Module A
        Sub main()
     
            Dim num() As Integer = {4, 3, 5, 1, 9}
            Dim t As Integer = 0
     
            For i = 0 To num.Length - 1
                For j = i + 1 To num.Length - 1
                    If num(i) < num(j) Then
                        t = num(j)
                        num(j) = num(i)
                        num(i) = t
                    End If
                Next j
            Next i
     
            For Each i As Integer In num
                Console.WriteLine(i)
            Next
        End Sub
    End Module

    选择排序法:第i个数字和后N个数字进行比较,总共比较N(N-1)次:

    第一轮:4和后面数字比较,排序得到:9,3,4,1,5

    第二轮:3和后面数字比较,排序得到:9,5,3,1,4

    第三轮:3和后面数字比较,排序得到:9,5,4,1,3

    第四轮:1和后面数字比较,排序得到:9,5,4,3,1

    第五轮:同第四轮(每比较一次,最大的数字被筛选出来,到第N-1轮个位置)。

    更多关于选择排序:http://baike.baidu.com/view/547263.htm


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年1月7日 7:02
    版主