我正在学习选择排序算法
find_smallest
我对函数[NSTimer scheduledTimerWithTimeInterval:target:selector: userInfo: repeats:],
感到好奇,
首先将arr [0]设为最小并启动循环。
我知道完整的代码称为选择排序算法
假设并在循环中更新其值,是否有术语?
答案 0 :(得分:1)
否。与快速排序不同,没有术语,我们选择枢轴并比较元素。 没有话题,但是关于选择排序的有趣事实是
关于选择排序的好处是它所做的交换不超过O(n)交换,并且在内存写入是一项昂贵的操作时很有用。
答案 1 :(得分:1)
我认为bubble sort
是答案。在我看到您的问题:D
bubble loop
作为最小假设。
def sort(arr):
for i in range(len(arr)):
# we presume a[i] is the smallest one. Then we update by compare it with the rest of the list
for j in range(i + 1, len(arr)):
if arr[i] > arr[j]: # if our assumption is wrong (arr[i] is not the smallest), update it with arr[j] (which is smaller than arr[i])
swap(arr[i], arr[j])
# After this `for j` loop, arr[i] will be the smallest value of the list
答案 2 :(得分:1)
假定列表的第一个索引为最小值,然后向下运行列表以查看是否存在较小的值,当找到较小的值时,它将更新smallest
,这样做直到列表的末尾,以确保您找到整个列表中的最小值,在您提供的示例中,它返回了列表中最小值的索引。
我添加了2条print
语句,这些语句应使您对其工作原理有所了解:
from typing import List
def find_smallest(arr:List) -> int:
smallest = arr[0] #set pivot
smallest_index = 0
print("presumed smallest {}".format(smallest)) #print presumed
for i in range(1, len(arr)):
if arr[i] < smallest:
smallest = arr[i]
smallest_index = i
print("updated smallest {}".format(smallest)) #print updates to smallest
return smallest_index
结果:
find_smallest([7,6,1,3,8,9,0])
>>presumed smallest 7
updated smallest 6
updated smallest 1
updated smallest 0
6