(a, left, right)
| 175 | |
| 176 | # ---------------------- Quicksort Benchmark ---------------------- |
| 177 | def quicksort(a, left, right): |
| 178 | if right <= left: |
| 179 | return |
| 180 | i, j, pivot = left - 1, right, a[right] |
| 181 | while True: |
| 182 | while True: |
| 183 | i += 1 |
| 184 | if i >= len(a) or a[i] >= pivot: |
| 185 | break |
| 186 | while True: |
| 187 | j -= 1 |
| 188 | if j < 0 or a[j] <= pivot: |
| 189 | break |
| 190 | if i >= j: |
| 191 | break |
| 192 | a[i], a[j] = a[j], a[i] |
| 193 | a[i], a[right] = a[right], a[i] |
| 194 | quicksort(a, left, j) |
| 195 | quicksort(a, i + 1, right) |
| 196 | |
| 197 | |
| 198 | def test_quicksort(num_tests, length): |
no outgoing calls