是否有一个非常简单的算法来确定4个数中哪一个最大?
答案 0 :(得分:13)
var lst = new List<int>() { 1, 7, 3, 4 };
var max = lst.Max();
我没有VB,但你明白了。
答案 1 :(得分:12)
如果它们在数组中,那么这样的东西应该有效:
VB:
Dim ar As Integer() = {3, 6, 9, 12}
Dim largest As Integer = ar(0)
For i As Integer = 1 To ar.Length - 1
If ar(i) > largest Then
largest = ar(i)
End If
Next
C#:
int[] ar = {3, 6, 9, 12};
int largest = ar[0];
for(int i = 1; i < ar.Length; i++) {
if(ar[i] > largest) {
largest = ar[i];
}
}
答案 2 :(得分:4)
如果您使用的语言支持某种max函数或数组排序,请务必使用这些功能。或者在这个帖子中选择任何其他合理的答案。但是,只是为了好玩:
maximum = (var1 > var2 ? var1 : var2) > (var3 > var 4 ? var3 : var 4) ?
(var1 > var2 ? var1 : var2) :
(var3 > var 4 ? var3 : var 4);
答案 3 :(得分:3)
将数字放入数组中,对数组进行排序,然后选择索引为数组长度为-1的数组。
或者您可以将数字放入数组中,对数组进行排序,反转数组,然后选择索引0。
如果您需要编写自己的排序算法,最简单的实现方法可能是bubble sort。
答案 4 :(得分:3)
使用VB.Net,你可以使用以下内容,它适用于任意数量的数字
Public Function Max(ParamArray items As Integer()) As Integer
if items.Length = 0 Then
throw New ArgumentException("need at least 1 number")
End IF
return items.Max()
End Function
然后你现在可以做
Max(1,2,3,4)
答案 5 :(得分:2)
有很多方法可以做到这一点。 一个非常天真的方法是:
#Pseudocode
If number1 > number2 and number1 > number3 and number1 > number4: return number1
Else if number2 > number3 and number2 > number4: return number2
Else if number3 > number4: return number3
Else: return number4
使用数组更实际,但是如果你开始使用数组可能比简单的数据块更复杂。
答案 6 :(得分:2)
如果它们在数组中 - 并且明确地执行它而不是使用sort:
int max = int.MinValue; // i.e. the "largest" negative number
int largest = -1;
for (int index = 0; index < array.Length; index++)
{
if (array[index] > max)
{
max = array[index];
largest = index;
}
}
最大值为max
,它是largest
中的索引。
Nate的答案更有效,因为它使用数组的第一个元素作为初始值。所以我的解决方案的前三行将成为:
int max = array[0];
int largest = 0;
for (int index = 0; index < array.Length; index++)
答案 7 :(得分:1)
答案 8 :(得分:0)
在Java中,如果a是int [4]:
Math.max(Math.max(a [0],a [1]),Math.max(a [2],a [3]))
答案 9 :(得分:0)
Private Sub Command1_Click()
Dim A, B, C, D As Long
A = Text1.Text
B = Text2.Text
C = Text3.Text
D = Text4.Text
If A < B And A < C And A < D Then
Label9.Caption = A
Else
If A > B And A > C And A > D Then
Label10.Caption = A
End If
结束如果
如果A&lt; B和A&lt; D和A&lt; C然后 Label9.Caption = A. 其他 如果A> B和A&gt; D和A&gt; C然后 Label10.Caption = A. 万一 结束如果
如果A&lt; C和A&lt; B和A&lt; D然后 Label9.Caption = A. 其他 如果A> C和A&gt; B和A&gt; D然后 Label10.Caption = A. 万一 结束如果
如果A&lt; C和A&lt; D和A&lt; B然后 Label9.Caption = A. 其他 如果A> C和A&gt; D和A&gt; B然后 Label10.Caption = A. 万一 结束如果
如果A&lt; D和A&lt; C和A&lt; B然后 Label9.Caption = A. 其他 如果A> D和A&gt; C和A&gt; B然后 Label10.Caption = A. 万一 结束如果
如果A&lt; D和A&lt; B和A&lt; C然后 Label9.Caption = A. 其他 如果A> D和A&gt; B和A&gt; C然后 Label10.Caption = A. 万一 结束如果
如果B < C和B&lt; A和B&lt; D然后 Label9.Caption = B. 其他 如果B> C和B&gt; A和B&gt; D然后 Label10.Caption = B. 万一 结束如果
如果B < C和B&lt; D和B&lt;那么 Label9.Caption = B. 其他 如果B> C和B&gt; D和B&gt;那么 Label10.Caption = B. 万一 结束如果
如果B < A和B&lt; C和B&lt; D然后 Label9.Caption = B. 其他 如果B> A和B&gt; C和B&gt; D然后 Label10.Caption = B. 万一 结束如果
如果B < A和B&lt; D和B&lt; C然后 Label9.Caption = B. 其他 如果B> A和B&gt; D和B&gt; C然后 Label10.Caption = B. 万一 结束如果
如果B < D和B&lt; C和B&lt;那么 Label9.Caption = B. 其他 如果B> D和B&gt; C和B&gt;那么 Label10.Caption = B. 万一 结束如果
如果B < D和B&lt; A和B&lt; C然后 Label9.Caption = B. 其他 如果B> D和B&gt; A和B&gt; C然后 Label10.Caption = B. 万一 结束如果
如果C < A和C&lt; B和C&lt; D然后 Label9.Caption = C. 其他 如果C> A和C&gt; B和C&gt; D然后 Label10.Caption = C. 万一 结束如果
如果C < A和C&lt; D和C&lt; B然后 Label9.Caption = C. 其他 如果C> A和C&gt; D和C&gt; B然后 Label10.Caption = C. 万一 结束如果
如果C < B和C&lt; A和C&lt; D然后 Label9.Caption = C. 其他 如果C> B和C&gt; A和C&gt; D然后 Label10.Caption = C. 万一 结束如果
If C < B And C < D And C < A Then
Label9.Caption = C
否则 如果C> B和C&gt; D和C&gt;那么 Label10.Caption = C. 万一 结束如果
If C < D And C < A And C < B Then
Label9.Caption = C
Else
If C > D And C > A And C > B Then
Label10.Caption = C
End If
结束如果
If C < D And C < B And C < A Then
Label9.Caption = C
Else
If C > D And C > B And C > A Then
Label10.Caption = C
End If
结束如果
If D < A And D < B And D < C Then
Label9.Caption = D
否则 如果D> A和D&gt; B和D&gt; C然后 Label10.Caption = D. 万一 结束如果
If D < A And D < C And D < B Then
Label9.Caption = D
否则 如果D> A和D&gt; C和D&gt; B然后 Label10.Caption = D. 万一 结束如果
If D < B And D < A And D < C Then
Label9.Caption = D
否则 如果D> B和D&gt; A和D&gt; C然后 Label10.Caption = D. 万一 结束如果
If D < B And D < C And D < A Then
Label9.Caption = D
Else
If D > B And D > C And D > A Then
Label10.Caption = D
End If
End If
If D < C And D < B And D < A Then
Label9.Caption = D
Else
If D > C And D > B And D > A Then
Label10.Caption = D
End If
End If
If D < C And D < A And D < B Then
Label9.Caption = D
Else
If D > C And D > A And D > B Then
Label10.Caption = D
End If
End If
Command2.Enabled = True
If A = D And A > C And A > B Then
MsgBox "Same highest numbers (" + A + ") is inputted."
highest = A
Label10.Caption = highest
Else
If A = D And A < C And A < B Then
MsgBox "Same lowest numbers (" + A + ") is inputted."
lowest = A
Label9.Caption = lowest
End If
End If
If A = B And A > C And A > D Then
MsgBox "Same highest numbers (" + A + ") is inputted."
highest = A
Label10.Caption = highest
Else
If A = B And A < C And A < D Then
MsgBox "Same lowest numbers (" + A + ") is inputted."
lowest = A
Label9.Caption = lowest
End If
End If
If B = D And B > A And B > C Then
MsgBox "Same highest numbers (" + B + ") is inputted."
highest = B
Label10.Caption = highest
Else
If B = D And B < A And B < C Then
MsgBox "Same lowest numbers (" + B + ") is inputted."
lowest = B
Label9.Caption = lowest
End If
End If
If B = C And B > D And B > A Then
MsgBox "Same highest numbers (" + B + ") is inputted."
highest = B
Label10.Caption = highest
Else
If B = C And B < D And B < A Then
MsgBox "Same lowest numbers (" + B + ") is inputted."
lowest = B
Label9.Caption = lowest
End If
End If
If C = A And C > D And C > B Then
MsgBox "Same highest numbers (" + C + ") is inputted."
highest = C
Label10.Caption = highest
Else
If C = A And C < D And C < B Then
MsgBox "Same lowest numbers (" + C + ") is inputted."
lowest = C
Label9.Caption = lowest
End If
End If
If C = D And C > B And C > A Then
MsgBox "Same highest numbers (" + C + ") is inputted."
highest = C
Label10.Caption = highest
Else
If C = D And C < B And C < A Then
MsgBox "Same lowest numbers (" + C + ") is inputted."
lowest = C
Label9.Caption = lowest
End If
End If
End Sub
Private Sub Command2_Click()
Text1.Text = Clear
Text2.Text = Clear
Text3.Text = Clear
Text4.Text = Clear
Label9.Caption = Clear
Label10.Caption = Clear
Command2.Enabled = False
Command1.Enabled = False
Text1.SetFocus
End Sub
Private Sub Command3_Click()
End
End Sub
Private Sub Form_Load()
Command2.Enabled = False
Command1.Enabled = False
End Sub
Private Sub Text1_Change()
Command1.Enabled = True
End Sub
答案 10 :(得分:-1)
我的第一个问题是为什么?第二个是,如果它只有四个数字那么它真的没关系。无论你喜欢什么。我个人会使用最少的代码行。这将是使用内置的array.Sort方法,然后采取最后一项
我也会考虑使用LINQ,因为你可以
或者Math.Max以一种令人讨厌的嵌套方式,所以Math.Max(Number1,Math.Max(Number2,Math.Max(Number3,Number4))))
如果可能有数百个数字,那么我会尝试选择一个更好的算法。可能是@ChrisF建议的那个,虽然它取决于数字的来源,EG数据库可以更容易地找到最大值,或者如果从某个地方顺序读取数字,那么你可以在读取时存储最大值号。