熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

同時找到數組中的最小值和最大值

2013-11-13 10:15:20  來源: .NET編程 

  找出包含n個元素的數組中的最小值和最大值最簡單的方法就是獨立的使用n次循環然後分別得到最小值和最大值如是這樣的共用了n次比較

  但是我們可以使用比較次數更低的方法來找出最小值和最大值方法如下

  先將一對元素互相進行比較然後把最小值跟當前最小值進行比較把最大值跟當前最大值進行比較因此每兩個元素需要次比較

  如果n 為奇數那麼比較的次數是<![if supportFields]> <![endif]>次比較如果n 為偶數那麼比較的次數是n/次比較因此不管是n是奇數還是偶數比較的次數至多是 具體的c# 代碼如下

  public void LookMinMaxElement(Int[] aref Int minref Int max)

  {

  for (int i = ; i <= aLength ; i+=)

  {

  if (!(i + >= aLength))

  {

  if (a[i] < a[i + ])

  {

  if (a[i] < min)

  {

  min = a[i];

  }

  if (a[i + ] > max)

  {

  max = a[i + ];

  }

  }

  else

  {

  if (a[i + ] < min)

  {

  min = a[i + ];

  }

  if (a[i] > max)

  {

  max = a[i];

  }

  }

  }

  }

  }

  測試代碼如下

  [TestMethod()]

  public void LookMinMaxElementTest()

  {

  MinMaxElement target = new MinMaxElement(); // TODO: Initialize to an appropriate value

  int[] a = new Int[] { };

  Int min = IntMaxValue;

  Int max = IntMinValue;

  targetLookMinMaxElement(a ref min ref max);

  AssertAreEqual( min);

  AssertAreEqual( max);

  a = new Int[] { };

  min = IntMaxValue;

  max = IntMinValue;

  targetLookMinMaxElement(a ref min ref max);

  AssertAreEqual( min);

  AssertAreEqual( max);

  }


From:http://tw.wingwit.com/Article/program/net/201311/13069.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.