How to get the median of two sorted arrays in Pascal

1 Answer

0 votes
program FindMedian;

uses 
  SysUtils; // FloatToStr

const
  N1 = 3;
  N2 = 3;

type
  TIntArray = array[1..N1 + N2] of Integer;

var
  arr1: array[1..N1] of Integer = (1, 3, 5);
  arr2: array[1..N2] of Integer = (2, 4, 6);
  merged: TIntArray;
  i, j, k, mid: Integer;
  temp: Integer;
  median: Real;

begin
  // Merge arrays 
  k := 1;
  for i := 1 to N1 do
  begin
    merged[k] := arr1[i];
    Inc(k);
  end;
  for j := 1 to N2 do
  begin
    merged[k] := arr2[j];
    Inc(k);
  end;

  // Sort merged array using Bubble Sort 
  for i := 1 to N1 + N2 - 1 do
    for j := 1 to N1 + N2 - i do
      if merged[j] > merged[j + 1] then
      begin
        temp := merged[j];
        merged[j] := merged[j + 1];
        merged[j + 1] := temp;
      end;

  // Find median 
  mid := (N1 + N2) div 2;
  if (N1 + N2) mod 2 <> 0 then
    median := merged[mid + 1]
  else
    median := (merged[mid] + merged[mid + 1]) / 2;

  // Output result 
  WriteLn('Median: ', FloatToStr(median));
end.



(*
run:

Median: 3.5

*)

 



answered Sep 23 by avibootz
...