def bubble_sort_improved(A):
    N = len(A)
    for j in range(N - 1):
        swapped = False
        for i in range(N-1-j):
            if A[i] > A[i+1]:
                A[i], A[i+1] = A[i+1], A[i]
                swapped = True
        if not swapped:
            break
    return A

print(bubble_sort_improved([5, 3, 8, 1, 4]))
