我有一个数值数组, 存放一些数据(没有规律). 数组大小大概有400个元素吧. 我想用比较快的方法找到这里面的最大值和最小值. 不知道用什么算法快一些, 谢谢

解决方案 »

  1.   

    循环一次:)
    int min = int.MaxValue;
    int max = int.MinValue;foreach(int i in numbers)
    {
       if( i < min ) min = i;
       if( i > max ) max = i;
    }
      

  2.   

    使用冒泡排序法
    public static void BubbleSort(int[] R)
            {
                int i, j;
                int temp;  
                bool exchange;            for (i = 0; i < R.Length; i++)            
     {
                    exchange = false; 
                    for (j = R.Length - 2; j >= i; j--)
                    {
                        if (R[j + 1] < R[j]) 
                        {
                            temp = R[j + 1];
                            R[j + 1] = R[j];
                            R[j] = temp;                        exchange = true; 
                        }
                    }
                    if (!exchange) 
                    {
                        break;
                    }
                }                
                    Console.WriteLine(R[R.Length-1]);              
            }
      

  3.   

    2楼是正解。快速排序是O(nlogn),冒泡更慢。2楼是n,在数组无规律的情况下应该是最好的。
      

  4.   

    [Quote=引用 5 楼 bloodish 的回复:]
    引用 1 楼 gomoku 的回复:
    循环一次:) 
    C# code 
    int min = int.MaxValue; 
    int max = int.MinValue; foreach(int i in numbers) 

      if( i < min ) min = i; 
      if( i > max ) max = i; 

     
      

  5.   


    首先明确一点排序算法和查找算法是两回事情
    而楼主要求的查找最大最小值,可以看成是一种特例
    如果你要找某个具体的值,线性的查找就不一定是最快的,比如二分查找,时间复杂度只有O(lgN)
    而查最大最小值就必定要遍历整个数组,因此......