我的数组元素是奇数个的,如3/5/7个,比如如果是7个元素,按大小排序后,我要提取第4个元素,请问最快的方法是什么
我觉得如果先排序在去中间的数据应该不是最快的。我只要提取这个中间元素,不需要其他结果。
比如 7个数  10 21 12 8 3 9 15 
我要的结果就是 10

解决方案 »

  1.   

    其实像快速排序和堆排序这种时间复杂度是nlogn级别的已经算是很快的了
    排完序就可以直接查找了或者试试AVL树
      

  2.   

    在vba中有一个函数Median不知道在vb中有没有。
      

  3.   

    无需排序,循环比较,如果是7个数,只要其中一个数大于三个数,小于三个数就可以了
    代码如下:Private Sub Command1_Click()
    Dim s(6) As Long
    Dim aa As Long
    Dim i As Long
    Dim p As Long
    Dim temp As Long
    Dim ncount As Longs(0) = 22
    s(1) = 21
    s(2) = 25
    s(3) = 8
    s(4) = 9
    s(5) = 15
    s(6) = 3aa = 4 - 1
    For i = 0 To 6
        temp = s(i)
        For p = 0 To 6
            If temp > s(p) Then
                ncount = ncount + 1
            End If
        Next
        If ncount = aa Then Exit For
        ncount = 0
    Next
    MsgBox s(i)End Sub
      

  4.   

    wcm7474(雨人) 的方法不错.
    对数组排序,要先进行冒泡比较,然后交换位置,多出不少手续.
      

  5.   

    冒泡排序效率是很低的
    追求高效的排序算法要用堆排序
    时间复杂度nlogn
      

  6.   

    wcm7474(雨人) 的方法比较的级别n2
    数据交换无!也不错,不过没考虑排序的问题。
    像冒泡、选择和插入排序效率都不太高,你可以试试快速排序等