算法图解(选择排序)
程序员文章站
2022-05-05 17:38:32
...
def findSmallest(arr):
smallest = arr[0]
smallest_index = 0
for i in range(1,len(arr)):
if arr[i] < smallest:
smallest = arr[i]
smallest_index = i
return smallest_index
def selectionSort(arr):
newArr = []
for i in range(len(arr)):
smallest = findSmallest(arr)
newArr.append(arr.pop(smallest))
#pop()删除索引值
return newArr
print(selectionSort([5,4,2,7,3,9]))
时间复杂度思考:
时间复杂度O (n^2)
初步个人理解,次数= n + n-1 + n-2 +…+ 2 + 1
等比数列求和运行时间为O (1/2 *n * (1 + n))
当n足够大的时候,由高等数学可知等式中1/2和1都可以舍去,所以时间复杂度为O (n^2)
上一篇: 3.26
下一篇: 关于二分法的一些误区