我的数组元素是奇数个的,如3/5/7个,比如如果是7个元素,按大小排序后,我要提取第4个元素,请问最快的方法是什么
我觉得如果先排序在去中间的数据应该不是最快的。我只要提取这个中间元素,不需要其他结果。
比如 7个数 10 21 12 8 3 9 15
我要的结果就是 10
我觉得如果先排序在去中间的数据应该不是最快的。我只要提取这个中间元素,不需要其他结果。
比如 7个数 10 21 12 8 3 9 15
我要的结果就是 10
排完序就可以直接查找了或者试试AVL树
代码如下: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
对数组排序,要先进行冒泡比较,然后交换位置,多出不少手续.
追求高效的排序算法要用堆排序
时间复杂度nlogn
数据交换无!也不错,不过没考虑排序的问题。
像冒泡、选择和插入排序效率都不太高,你可以试试快速排序等