| 11 | quickSortHelper(alist, splitPoint+1, last) |
| 12 | |
| 13 | def partition(alist, first, last): |
| 14 | pivotvlue = alist[first] |
| 15 | |
| 16 | leftmark = first+1 |
| 17 | rightmark = last |
| 18 | done = False |
| 19 | |
| 20 | while not done: |
| 21 | while leftmark <= rightmark and alist[leftmark] <= pivotvlue: # bugfix: 先比较index, 不然数组会越界 |
| 22 | leftmark += 1 |
| 23 | while rightmark >= leftmark and alist[rightmark] >= pivotvlue: |
| 24 | rightmark -= 1 |
| 25 | |
| 26 | if leftmark > rightmark: |
| 27 | done = True |
| 28 | else: |
| 29 | alist[leftmark], alist[rightmark] = alist[rightmark], alist[leftmark] |
| 30 | alist[rightmark], alist[first] = alist[first], alist[rightmark] |
| 31 | return rightmark |
| 32 | |
| 33 | alist = [54,26,93,17,77,31,44,55,20] |
| 34 | alist2 = [1] |