插入排序:课本案例带注释
时间: 2023-06-23 20:51:45 浏览: 65
好的,下面是插入排序的课本案例带注释。
```python
def insertion_sort(lst):
for i in range(1, len(lst)):
key = lst[i] # 将当前位置的元素保存为变量key
j = i - 1 # 初始化j为i的前一个位置
while j >= 0 and lst[j] > key: # 如果j超出列表下标范围或者lst[j]小于等于key,则退出循环
lst[j+1] = lst[j] # 将lst[j]后移一位
j -= 1 # j向前移动一位
lst[j+1] = key # 将key放到lst[j]后面
return lst
```
插入排序的核心思想是将一个元素插入到已排序的子序列中。这里使用了一个for循环遍历列表中的每个元素。在每次循环中,将当前位置的元素保存为变量`key`,然后从当前位置的前一个位置开始向前遍历已排序的子序列,直到找到一个位置j使得lst[j]小于等于key,或者j超出列表下标范围。在遍历已排序的子序列时,每次将lst[j]后移一位,直到找到合适的位置。最后,将key放到lst[j]后面,完成插入操作。
相关问题
快速排序:课本案例带注释
好的,下面是快速排序的课本案例带注释。
```python
def quick_sort(lst):
if len(lst) <= 1: # 如果列表长度小于等于1,直接返回
return lst
else:
pivot = lst[0] # 以列表第一个元素作为基准值
left = [x for x in lst[1:] if x < pivot] # 将小于基准值的元素放到左边列表
right = [x for x in lst[1:] if x >= pivot] # 将大于等于基准值的元素放到右边列表
return quick_sort(left) + [pivot] + quick_sort(right) # 递归调用快速排序函数并将左、基准、右三个列表合并
```
这里使用了列表推导式来创建左、右两个列表。其中,`left`列表包含所有小于基准值的元素,`right`列表包含所有大于等于基准值的元素。最后,使用递归调用快速排序函数来对左、右两个列表进行排序,并将它们与基准值合并。
选择排序:课本案例带注释
好的,以下是选择排序的课本案例代码,每一行都带有注释解释:
```python
def selection_sort(arr):
n = len(arr) # 获取列表长度
for i in range(n): # 外层循环,每次找到最小的元素并把它放在正确的位置上
min_index = i # 假设当前元素为最小值
for j in range(i+1, n): # 内层循环,从下一个元素开始比较
if arr[j] < arr[min_index]: # 如果找到了更小的元素,更新最小值索引
min_index = j
arr[i], arr[min_index] = arr[min_index], arr[i] # 把最小值放在正确的位置上
return arr # 返回排序后的列表
```
希望对你有所帮助!
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)