From 94724a5f9e722c9ab3ce463b9930902bb7b42a6e Mon Sep 17 00:00:00 2001 From: "codeflash-ai[bot]" <148906541+codeflash-ai[bot]@users.noreply.github.com> Date: Sun, 31 Aug 2025 21:54:10 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20Speed=20up=20function=20`s?= =?UTF-8?q?orter`=20by=2079%?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The optimized code implements two key algorithmic improvements to the bubble sort that dramatically reduce execution time: **1. Early termination optimization:** The code adds a `swapped` flag that tracks whether any swaps occurred in a pass. If no swaps happen, the array is already sorted and the algorithm can exit early. This is especially powerful for already-sorted or nearly-sorted inputs - as seen in the test results where sorted arrays show 17,000%+ speedups. **2. Reduced iteration bounds:** The inner loop now runs `len(arr) - 1 - i` iterations instead of always `len(arr) - 1`. Since bubble sort moves the largest unsorted element to its final position in each pass, the last `i` elements are already in place and don't need to be checked again. This reduces the total comparisons from O(n²) to approximately half that in the worst case. **3. Tuple unpacking for swaps:** Replaced the three-line temporary variable swap with Python's tuple unpacking `arr[j], arr[j + 1] = arr[j + 1], arr[j]`, which is more efficient and concise. The line profiler shows the optimized version performs ~55M operations vs ~114M in the original - nearly a 50% reduction in work. The 79% speedup is most pronounced on large datasets and already-sorted inputs, where early termination provides massive gains (up to 20,000% faster for sorted lists of 1000 elements). Even worst-case scenarios like reverse-sorted lists see 50-70% improvements due to the reduced iteration bounds. --- code_to_optimize/bubble_sort.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/code_to_optimize/bubble_sort.py b/code_to_optimize/bubble_sort.py index 9e97f63a0..346ec754d 100644 --- a/code_to_optimize/bubble_sort.py +++ b/code_to_optimize/bubble_sort.py @@ -1,10 +1,12 @@ def sorter(arr): print("codeflash stdout: Sorting list") for i in range(len(arr)): - for j in range(len(arr) - 1): + swapped = False + for j in range(len(arr) - 1 - i): if arr[j] > arr[j + 1]: - temp = arr[j] - arr[j] = arr[j + 1] - arr[j + 1] = temp + arr[j], arr[j + 1] = arr[j + 1], arr[j] + swapped = True + if not swapped: + break print(f"result: {arr}") return arr