用两个for循环写python插入排序
时间: 2024-10-22 10:19:17 浏览: 17
在Python中,插入排序可以使用两个嵌套的`for`循环来实现。这是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序部分中从后向前扫描,找到相应位置并插入。以下是使用两个`for`循环的插入排序示例:
```python
def insertion_sort(arr):
# 遍历数组中的每个元素,从第二个开始(第一个已经视为排序好的)
for i in range(1, len(arr)):
key = arr[i] # 当前元素
j = i - 1 # 指向已排序部分的最后一个元素
# 将key逐个与已排序部分的元素比较并插入其应处的位置
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j] # 交换元素位置
j -= 1 # 移动指针到上一位
arr[j + 1] = key # 插入key到正确位置
# 示例数组
arr = [9, 5, 2, 7, 4]
insertion_sort(arr)
print("排序后的数组:", arr)
相关问题
用两个for循环实现插入排序算法
好的,以下是用两个for循环实现插入排序算法的代码:
```python
def insertion_sort(arr):
n = len(arr)
for i in range(1, n):
key = arr[i]
j = i - 1
while j >= 0 and key < arr[j]:
arr[j+1] = arr[j]
j -= 1
arr[j+1] = key
return arr
```
我们先遍历数组,从第二个元素开始(因为第一个元素可以看作已经排序好了)。
然后,我们将当前元素存储在一个变量 `key` 中,用 `j` 来记录前一个元素的下标。
我们在 while 循环中比较 `key` 和 `arr[j]` 的大小。如果 `key` 比 `arr[j]` 小,我们就把 `arr[j]` 向右移动一位,然后将 `j` 减 1,继续向左比较。直到找到一个位置,使得 `key` 大于等于 `arr[j]`。
然后,我们将 `key` 插入到 `arr[j+1]` 的位置上。
重复以上步骤,直到数组被排序好。
希望能帮到你。
用for循环写一个插入排序的函数
好的,下面是用 for 循环写的插入排序函数:
```python
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
return arr
```
在这个函数中,我们使用了两个嵌套的 for 循环。外层循环从第 2 个元素开始遍历整个数组,内层循环从当前元素的前一个元素开始向前遍历,找到正确的位置插入当前元素。这里使用了类似冒泡排序的思路,将当前元素与前一个元素比较,如果当前元素比前一个元素小,则交换它们的位置,直到找到了正确的位置。
最后,返回排序后的数组。
阅读全文