"""
每一趟从列表中选择一个最小的值,然后和第一个值交换位置。所以第一趟比较了n次
以此类推第二趟比较了n-1
一共比较了多少趟:n-1趟
选择排序的时间复杂度为n趟*每一趟比较的n次。所以最坏时间复杂度为O(n**2)
"""
def select_sort(myList):
n=len(myList)
for j in range(1,n):
min_index=j-1 #min是列表中最小值的下标位
for i in range(j,n):
if myList[i] < myList[min_index]:
min_index=i
myList[j-1],myList[min_index] = myList[min_index],myList[j-1]
def select_sort2(myList,start):
n=len(myList)
if start==(n-1): #递归的边界
return
min_index=start #min是列表中最小的下标位,首先选取列表中第一个值为最小值
for i in range(start+1,n):
if myList[i] < myList[min_index]:
min_index = i
myList[start],myList[min_index] = myList[min_index],myList[start]
select_sort2(myList,start+1)
if __name__ == '__main__':
l=[89,23,11,99,10,34,9,56,8]
print(l)
# select_sort(l)
select_sort2(l,0)
print(l)