你有四个数字,你怎么知道哪一个是最大的?

时间:2009-06-09 16:49:13

标签: vb.net

是否有一个非常简单的算法来确定4个数中哪一个最大?

11 个答案:

答案 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)

  • 从用户处获取A,B,C,D;
  • largest = A;
  • 如果B>最大的
  • 最大= B;
  • 如果C>最大的
  • 最大= C;
  • 如果D&gt;最大的
  • 最大= D;
  • 打印最大

答案 8 :(得分:0)

在Java中,如果a是int [4]:

Math.max(Math.max(a [0],a [1]),Math.max(a [2],a [3]))

答案 9 :(得分:0)

这是我自己的分析。我使用此代码显示文本框中4个输入数字中的最低和最高数字。它将显示指定标签的最低和最高。如果您输入两个相同的最低或最高数字,msgbox似乎以某种方式通知您输入相同的最高或最低数字,并显示回其相应的标签。我使用标签显示最低和最高。这是我的fb:iver saladaga anoos,JHCSC tambulig,zamboanga del sur,菲律宾的第二年学生.. 所以在这里!它对我有用。即时通讯使用vb6企业版。 :)

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数据库可以更容易地找到最大值,或者如果从某个地方顺序读取数字,那么你可以在读取时存储最大值号。