input: Write a function to find the median of a list using the divide and conquer approach.
  assert median_divide_and_conquer([1, 3, 5, 7]) == 4
  assert median_divide_and_conquer([1, 2, 3, 4, 5, 6, 8, 9]) == 4.5
  assert median_divide_and_conquer([5, 7, 2, 3]) == 4
output: def median_divide_and_conquer(arr):
      def find_median(nums, k):
          if len(nums) == 1:
              return nums[0]
          
          pivot = nums[len(nums) // 2]
          lows = [x for x in nums if x < pivot]
          highs = [x for x in nums if x > pivot]
          pivots = [x for x in nums if x == pivot]
          
          if k < len(lows):
              return find_median(lows, k)
          elif k < len(lows) + len(pivots):
              return pivots[0]
          else:
              return find_median(highs, k - len(lows) - len(pivots))
      
      n = len(arr)
      if n % 2 == 1:
          return find_median(arr, n // 2)
      else:
          return (find_median(arr, n // 2 - 1) + find_median(arr, n // 2)) / 2