CODE

FIND MEDIAN FROM DATA STREAM

Heap/Priority Queue

public class MedianFinder {

  List<int> numbers = new List<int>();

  public MedianFinder() {

  }
  
  public void AddNum(int num) {
    if (numbers.Count == 0)
      numbers.Add(num);
    else
    {
      int i = 0;
      while (i < numbers.Count && numbers[i] < num)
        i++;
      if (i == numbers.Count)
        numbers.Add(num);
      else
        numbers.Insert(i, num);
    }
  }
  
  public double FindMedian() {
    if (numbers.Count % 2 != 0)
    {
      int ind = (numbers.Count - 1)/2;
      return numbers[ind] / 1.0;
    }
    else
    {
      int ind = (numbers.Count - 2) / 2;
      return (numbers[ind] + numbers[ind+1]) / 2.0;
    }
  }
}						
					
67
© 2025 Dallas Scott