对一组一维数组中的全部数字进行排序，然后使用一个数组来存储中位数，将小于中位数的数字放在中位数的左边，将大于中位数的数字放在中位数的右边。
user
请对以下代码进行优化，使其更加简洁和高效：

```python
def sort_and_partition(arr):
    sorted_arr = sorted(arr)
    median = sorted_arr[len(sorted_arr)//2] if len(sorted_arr) % 2 == 1 else (sorted_arr[len(sorted_arr)//2 - 1] + sorted_arr[len(sorted_arr)//2]) / 2
    left = [x for x in sorted_arr if x < median]
    right = [x for x in sorted_arr if x > median]
    return left + [median] + right
```
assistant