def quick_sort(arr):
"""
Quick Sort - O(n log n) average time complexity
Picks a pivot element and partitions array around it.
"""
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
# Example usage
data = [64, 34, 25, 12, 22, 11, 90]
print("Original:", data)
print("Sorted:", quick_sort(data))