给定一个整数序列,请按非递减序输出采用直接插入排序的各趟排序后的结果pta
时间: 2023-11-06 16:24:47 浏览: 220
好的,我来给你讲一下直接插入排序的思路,再根据你的要求编写代码实现。
直接插入排序的基本思路是:将一个待排序的序列分为两部分,一部分是已经排好序的子序列,另一部分是未排序的子序列。初始时,已排序的子序列只有一个元素,就是待排序序列的第一个元素。然后,依次从未排序的子序列中取一个元素,将其插入到已排序的子序列中的正确位置,直到未排序的子序列为空。
下面是采用直接插入排序实现的代码:
```python
def insertion_sort(nums):
n = len(nums)
for i in range(1, n):
# 将 nums[i] 插入到已排序的子序列中
j = i - 1
while j >= 0 and nums[j] > nums[j+1]:
nums[j], nums[j+1] = nums[j+1], nums[j]
j -= 1
return nums
```
这段代码中,我们首先定义了一个函数 `insertion_sort`,它接受一个整数序列 `nums` 作为参数,并返回按非递减序输出采用直接插入排序的各趟排序后的结果。
接着,在函数中,我们通过一个循环遍历待排序的序列 `nums`,并在循环的每一步中,将当前元素插入到已排序的子序列中。具体来说,我们从已排序的子序列中的最后一个元素开始,向前依次比较,找到当前元素的正确位置,并将其插入到该位置。
最后,我们返回排序后的序列 `nums`。
阅读全文