首页 > 解决方案 > 假定一个值作为初始值,在循环中更新它的值

问题描述

我正在学习选择排序算法

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] 为最小并启动循环。

我知道完整的代码叫做选择排序算法,

假设并在循环中更新其值怎么样,是否有术语?

标签: pythonalgorithm

解决方案


不。与快速排序不同,它没有术语,我们选择一个枢轴并比较元素。不在主题范围内,但关于选择排序的一个有趣事实是

选择排序的好处是它永远不会超过 O(n) 交换,并且在内存写入是一项昂贵的操作时很有用。


推荐阅读