





"""simple docstring"""




def  a_       (							_lowercase     ):
						if len(_lowercase     ) > 1:
												_UpperCamelCase    :      List[str]						     =					len(_lowercase     ) // 2  # Finds the middle of the array
												_UpperCamelCase    :      Dict						     =					arr[
												    :middle_length
												]  # Creates an array of the elements in the first half.
												_UpperCamelCase    :      Union[str, Any]						     =					arr[
												    middle_length:
												]  # Creates an array of the elements in the second half.
												_UpperCamelCase    :      str						     =					len(_lowercase     )
												_UpperCamelCase    :      List[str]						     =					len(_lowercase     )
												merge(_lowercase     )  # Starts sorting the left.
												merge(_lowercase     )  # Starts sorting the right
												_UpperCamelCase    :      Dict						     =					0  # Left Counter
												_UpperCamelCase    :      Union[str, Any]						     =					0  # Right Counter
												_UpperCamelCase    :      Optional[int]						     =					0  # Position Counter
												while (
												    left_index < left_size and right_index < right_size
												):  # Runs until the lowers size of the left and right are sorted.
																		if left_array[left_index] < right_array[right_index]:
																								_UpperCamelCase    :      Dict						     =					left_array[left_index]
																								left_index += 1
																		else:
																								_UpperCamelCase    :      Tuple						     =					right_array[right_index]
																								right_index += 1
																		index += 1
												while (
												    left_index < left_size
												):  # Adds the left over elements in the left half of the array
																		_UpperCamelCase    :      int						     =					left_array[left_index]
																		left_index += 1
																		index += 1
												while (
												    right_index < right_size
												):  # Adds the left over elements in the right half of the array
																		_UpperCamelCase    :      Any						     =					right_array[right_index]
																		right_index += 1
																		index += 1
						return arr


if __name__ == "__main__":
						import doctest

						doctest.testmod()










"""simple docstring"""




def  a_       (							_lowercase     ):
						_UpperCamelCase    :      str						     =					len(_lowercase     )

						# Set the gap value to be decreased by a factor of 1.3
						# after each iteration
						_UpperCamelCase    :      str						     =					1.3

						# Continue sorting until the gap is 1
						while gap > 1:
												# Decrease the gap value
												_UpperCamelCase    :      Union[str, Any]						     =					int(gap / shrink     )

												# Sort the elements using insertion sort
												for i in range(_lowercase ,		len(_lowercase     )     ):
																		_UpperCamelCase    :      Optional[Any]						     =					collection[i]
																		_UpperCamelCase    :      int						     =					i
																		while j >= gap and collection[j - gap] > temp:
																								_UpperCamelCase    :      List[str]						     =					collection[j - gap]
																								j -= gap
																		_UpperCamelCase    :      Union[str, Any]						     =					temp

						return collection


if __name__ == "__main__":
						import doctest

						doctest.testmod()



