排序四个整数:VBA Excel
变量中存储了四个整数。找到最大的、第二大的、第三大的和最小的是什么?有没有一种优雅的方法可以不用编写长代码就完成这项工作?最优雅、最常见的整数排序方法是和算法 但是如果你只有四个整数,这可能有点过分了。因此,您还可以实现一个简单的排序四个整数:VBA Excel,vba,sorting,integer,Vba,Sorting,Integer,变量中存储了四个整数。找到最大的、第二大的、第三大的和最小的是什么?有没有一种优雅的方法可以不用编写长代码就完成这项工作?最优雅、最常见的整数排序方法是和算法 但是如果你只有四个整数,这可能有点过分了。因此,您还可以实现一个简单的if-else算法 快速排序 Private Sub QuickSort( _ ByRef ArrayToSort As Variant, _ ByVal Low As Long
if-else
算法
快速排序
Private Sub QuickSort( _
ByRef ArrayToSort As Variant, _
ByVal Low As Long, _
ByVal High As Long)
Dim vPartition As Variant, vTemp As Variant
Dim i As Long, j As Long
If Low > High Then Exit Sub
vPartition = ArrayToSort((Low + High) \ 2)
i = Low: j = High
Do
Do While ArrayToSort(i) < vPartition
i = i + 1
Loop
Do While ArrayToSort(j) > vPartition
j = j - 1
Loop
If i <= j Then
vTemp = ArrayToSort(j)
ArrayToSort(j) = ArrayToSort(i)
ArrayToSort(i) = vTemp
i = i + 1
j = j - 1
End If
Loop Until i > j
If (j - Low) < (High - i) Then
QuickSort ArrayToSort, Low, j
QuickSort ArrayToSort, i, High
Elsea
QuickSort ArrayToSort, i, High
QuickSort ArrayToSort, Low, j
End If
End Sub
For j = UBound(ArrayToSort) - 1 To LBound(ArrayToSort) Step -1
For i = LBound(ArrayToSort) To j
If ArrayToSort(i) > ArrayToSort(i + 1) Then
vTemp = ArrayToSort(i)
ArrayToSort(i) = ArrayToSort(i + 1)
ArrayToSort(i + 1) = vTemp
End If
Next i
Next j
4个元素可以使用5条if/swap语句进行排序(排序网络):
您可以使用Excel中的大小函数。您介意将其解释为代码示例吗?抱歉,我理解这个问题是基于工作表范围的,而不是4个变量。谢谢!虽然看起来不容易理解,但我会尝试一下!谢谢我想知道代码是用什么语言写的?“交换”方法是否可以在Excel中使用VBA,或者有其他选择吗?它是用于交换函数的伪代码或C++的名称空间STD。要交换a和b,使用名为t的临时变量,使用| t=a | a=b | b=t |。这是一个例子。
if (a[0] > a[2]) { swap(a[0], a[2]); }
if (a[1] > a[3]) { swap(a[1], a[3]); }
if (a[0] > a[1]) { swap(a[0], a[1]); }
if (a[2] > a[3]) { swap(a[2], a[3]); }
if (a[1] > a[2]) { swap(a[1], a[2]); }