python 快速排序并标出其原下标
时间: 2023-06-23 15:50:30 浏览: 134
好的,针对你的问题,我可以给出以下 Python 代码实现快速排序并标出原下标:
```python
def quicksort_with_index(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2][0]
left = []
middle = []
right = []
for i in range(len(arr)):
if arr[i][0] < pivot:
left.append(arr[i])
elif arr[i][0] == pivot:
middle.append(arr[i])
else:
right.append(arr[i])
return quicksort_with_index(left) + middle + quicksort_with_index(right)
# 示例代码
arr = [(3, 2), (1, 5), (4, 9), (2, 7), (5, 1)]
sorted_arr = quicksort_with_index(arr)
print("排序后的数组为:", sorted_arr)
```
在这个示例代码中,我通过定义一个 `quicksort_with_index` 函数来实现快速排序,将原数组中每个元素作为一个元组来表示,元组的第一个元素是排序的关键字,第二个元素是该元素在原数组中的下标。在排序过程中,我将元素拆分成三个子数组:比基准元素小的、与基准元素相同的、比基准元素大的。在递归过程中,将子数组排序,并将三个子数组合并起来得到最终的排序结果。
最后,输出排序后的数组即可。
阅读全文