input: Write a function to perform insertion sort using binary search.
  assert insertionSort([12, 11, 13, 5, 6]) == [5, 6, 11, 12, 13]
  assert insertionSort([4, 3, 2, 10, 12, 1, 5, 6]) == [1, 2, 3, 4, 5, 6, 10, 12]
  assert insertionSort([1, 2, 3, 4, 5]) == [1, 2, 3, 4, 5]
output: def insertionSort(arr):
      def binary_search(arr, val, start, end):
          while start < end:
              mid = (start + end) // 2
              if arr[mid] < val:
                  start = mid + 1
              else:
                  end = mid
          return start
  
      for i in range(1, len(arr)):
          val = arr[i]
          j = binary_search(arr, val, 0, i)
          arr = arr[:j] + [val] + arr[j:i] + arr[i+1:]
          
      return arr