Return a pivot to partition data on by calculating Median of medians of input data :param arr: The data to be checked (a list) :return: median of medians of input array >>> median_of_medians([2, 4, 5, 7, 899, 54, 32]) 54 >>> median_of_medians([5, 7, 899, 54, 32]) 32
(arr: list)
| 29 | |
| 30 | |
| 31 | def median_of_medians(arr: list) -> int: |
| 32 | """ |
| 33 | Return a pivot to partition data on by calculating |
| 34 | Median of medians of input data |
| 35 | :param arr: The data to be checked (a list) |
| 36 | :return: median of medians of input array |
| 37 | |
| 38 | >>> median_of_medians([2, 4, 5, 7, 899, 54, 32]) |
| 39 | 54 |
| 40 | >>> median_of_medians([5, 7, 899, 54, 32]) |
| 41 | 32 |
| 42 | >>> median_of_medians([5, 4, 3, 2]) |
| 43 | 4 |
| 44 | >>> median_of_medians([3, 5, 7, 10, 2, 12]) |
| 45 | 12 |
| 46 | """ |
| 47 | |
| 48 | if len(arr) <= 5: |
| 49 | return median_of_five(arr) |
| 50 | medians = [] |
| 51 | i = 0 |
| 52 | while i < len(arr): |
| 53 | if (i + 4) <= len(arr): |
| 54 | medians.append(median_of_five(arr[i:].copy())) |
| 55 | else: |
| 56 | medians.append(median_of_five(arr[i : i + 5].copy())) |
| 57 | i += 5 |
| 58 | return median_of_medians(medians) |
| 59 | |
| 60 | |
| 61 | def quick_select(arr: list, target: int) -> int: |
no test coverage detected