Sub BubbleSort(List() As Long, Number As Long, DataCount As Long, SmallToBig As Boolean)
'/蒋玉龙于2003-03-08晚0:36编制,数组排序功能/
'传递过来的数组,共2维,N组数据//根据第Number个数据信息排序//总共DataCount个数据信息
'例如:X(N,4)→共N组数据,每组4个数据信息,分为/N,0/N,1/N,2/N,4/
Dim First As Long, Last As Long
Dim ii As Long, JJ As Long, KK As Long
'定义一个可以保存一维多数据的临时变量
Dim Temp() As Long
ReDim Temp(DataCount)
'***********************************************************
'调用方法
'Dim List(0 To 3, 0 To 2) As Long
'Dim II As Long
'
'List(0, 0) = 15
'List(0, 1) = 23 →用做排序
'List(0, 2) = 62
'
'List(1, 0) = 43
'List(1, 1) = 53 →用做排序
'List(1, 2) = 34
'
'List(2, 0) = 46
'List(2, 1) = 231→用做排序
'List(2, 2) = 34
'
'List(3, 0) = 12
'List(3, 1) = 13 →用做排序
'List(3, 2) = 22
'
'BubbleSort List(), 2, 3, False
'按照第2个信息排序,总共每维3组数据,从大到小
'***************************************************************
First = LBound(List, 1) '取得数组第1维上界
Last = UBound(List, 1) '取得数组第1维下界——判断出来有多少数据
'II是负责循环数据个数[维数],JJ是内层循环
For ii = First To Last - 1 '冒泡排序法
For JJ = ii + 1 To Last
If SmallToBig = True Then '从小到大
If List(ii, Number - 1) > List(JJ, Number - 1) Then
'记录第JJ个数据
For KK = 0 To DataCount - 1
Temp(KK) = List(JJ, KK)
Next
For KK = 0 To DataCount - 1
List(JJ, KK) = List(ii, KK)
Next
'恢复数据
For KK = 0 To DataCount - 1
List(ii, KK) = Temp(KK)
Next
End If
Else '从大到小
If List(ii, Number - 1) < List(JJ, Number - 1) Then
'记录第JJ个数据
For KK = 0 To DataCount - 1
Temp(KK) = List(JJ, KK)
Next
For KK = 0 To DataCount - 1
List(JJ, KK) = List(ii, KK)
Next
'恢复数据
For KK = 0 To DataCount - 1
List(ii, KK) = Temp(KK)
Next
End If
End If
Next
Next
End Sub
'/蒋玉龙于2003-03-08晚0:36编制,数组排序功能/
'传递过来的数组,共2维,N组数据//根据第Number个数据信息排序//总共DataCount个数据信息
'例如:X(N,4)→共N组数据,每组4个数据信息,分为/N,0/N,1/N,2/N,4/
Dim First As Long, Last As Long
Dim ii As Long, JJ As Long, KK As Long
'定义一个可以保存一维多数据的临时变量
Dim Temp() As Long
ReDim Temp(DataCount)
'***********************************************************
'调用方法
'Dim List(0 To 3, 0 To 2) As Long
'Dim II As Long
'
'List(0, 0) = 15
'List(0, 1) = 23 →用做排序
'List(0, 2) = 62
'
'List(1, 0) = 43
'List(1, 1) = 53 →用做排序
'List(1, 2) = 34
'
'List(2, 0) = 46
'List(2, 1) = 231→用做排序
'List(2, 2) = 34
'
'List(3, 0) = 12
'List(3, 1) = 13 →用做排序
'List(3, 2) = 22
'
'BubbleSort List(), 2, 3, False
'按照第2个信息排序,总共每维3组数据,从大到小
'***************************************************************
First = LBound(List, 1) '取得数组第1维上界
Last = UBound(List, 1) '取得数组第1维下界——判断出来有多少数据
'II是负责循环数据个数[维数],JJ是内层循环
For ii = First To Last - 1 '冒泡排序法
For JJ = ii + 1 To Last
If SmallToBig = True Then '从小到大
If List(ii, Number - 1) > List(JJ, Number - 1) Then
'记录第JJ个数据
For KK = 0 To DataCount - 1
Temp(KK) = List(JJ, KK)
Next
For KK = 0 To DataCount - 1
List(JJ, KK) = List(ii, KK)
Next
'恢复数据
For KK = 0 To DataCount - 1
List(ii, KK) = Temp(KK)
Next
End If
Else '从大到小
If List(ii, Number - 1) < List(JJ, Number - 1) Then
'记录第JJ个数据
For KK = 0 To DataCount - 1
Temp(KK) = List(JJ, KK)
Next
For KK = 0 To DataCount - 1
List(JJ, KK) = List(ii, KK)
Next
'恢复数据
For KK = 0 To DataCount - 1
List(ii, KK) = Temp(KK)
Next
End If
End If
Next
Next
End Sub