数组排序输出序号
时间: 2023-07-20 10:06:28 浏览: 119
可以使用以下步骤将数组排序并输出其序号:
1. 初始化一个数组 `index` 并赋值为 `[0, 1, 2, ..., n-1]`,其中 `n` 为原始数组的长度。
2. 使用排序算法(如快速排序)对原始数组进行排序,同时按照相同的排序规则对 `index` 数组进行排序。
3. 输出排序后 `index` 数组的元素即可,这些元素表示原始数组中每个元素的排序位置。
下面是一个 Python 实现示例:
```python
def sort_with_index(arr):
n = len(arr)
index = list(range(n))
# 使用排序算法对原始数组和 index 数组进行排序
quick_sort(arr, index, 0, n-1)
# 输出 index 数组
for i in index:
print(i, end=' ')
def quick_sort(arr, index, left, right):
if left >= right:
return
pivot = partition(arr, index, left, right)
quick_sort(arr, index, left, pivot-1)
quick_sort(arr, index, pivot+1, right)
def partition(arr, index, left, right):
pivot_value = arr[right]
i = left
for j in range(left, right):
if arr[j] < pivot_value:
arr[i], arr[j] = arr[j], arr[i]
index[i], index[j] = index[j], index[i]
i += 1
arr[i], arr[right] = arr[right], arr[i]
index[i], index[right] = index[right], index[i]
return i
```
假设我们有一个数组 `arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3]`,调用 `sort_with_index(arr)` 将输出:
```
1 3 0 9 2 7 4 8 6 5
```
这表示原始数组按照从小到大的顺序排序后,元素 `1` 的位置是第 `1` 个,元素 `3` 的位置是第 `3` 个,以此类推。
阅读全文