python - 假定一个值作为初始值,在循环中更新它的值
问题描述
我正在学习选择排序算法
from typing import List
def find_smallest(arr:List) -> int:
smallest = arr[0] #set pivot
smallest_index = 0
for i in range(1, len(arr)):
if arr[i] < smallest:
smallest = arr[i]
smallest_index = i
return smallest_index
def selection_sort(arr) -> List:
new_arr = []
for i in range(len(arr)):
smallest = find_smallest(arr)
new_arr.append(arr.pop(smallest))
return new_arr
我对这个函数很好奇find_smallest
,
它首先假定 arr[0] 为最小并启动循环。
我知道完整的代码叫做选择排序算法,
假设并在循环中更新其值怎么样,是否有术语?
解决方案
不。与快速排序不同,它没有术语,我们选择一个枢轴并比较元素。不在主题范围内,但关于选择排序的一个有趣事实是
选择排序的好处是它永远不会超过 O(n) 交换,并且在内存写入是一项昂贵的操作时很有用。
推荐阅读
- javascript - 如何使用钩子在 React 组件之间传输状态?
- javascript - 表格动态添加单选按钮等新元素如何添加更改事件
- excel - 如何将一个文件夹中多个excel工作簿上除工作表1和2之外的所有工作表复制到另一个工作簿中
- javascript - 我得到 TypeError: Cannot read property 'state' of undefined 我不明白是什么原因
- objective-c - 替代 HID API 来实现 MacOS 应用程序的游戏控制器?
- database - 插入前触发以根据姓名和姓氏创建主键
- swift - 由于权利不足,代码签名无效
- angular - ngIf 指令中的异步管道
- c# - 找不到 Nuget 包 (Microsoft.EntityFrameworkCore.SqlServer)
- python - 如何在我的 curses 程序中实现类似于 vim 的“命令行”