1、选择排序法不是稳定排序法,空间复杂度为最佳,只需一个额外空间
2、无论是最坏情况、最佳情况还是平均情况都需要找到最大值(或最小值), 因此比较的次数是(n-1) + (n-2) +…+3 + 2+1 = n(n-1)/2, 时间复杂度为O(n^2)
3、此排序法适用于数据量小或有部分数据已经过排序的情况
数据从小到大排序:
def showdata(data):
for i in range(len(data)):
print(data[i], end = " ")
print()
def select(data):
print("排序前的结果为:")
showdata(data)
for i in range(len(data)-1):
for j in range(i+1, len(data)):
if data[i] > data[j]: # 比较第i个元素和第j个元素
data[i], data[j] = data[j], data[i]
print("排序后的结果为:")
showdata(data)
if __name__ == "__main__":
select([1,3,5,2])
排序前的结果为:
1 3 5 2
排序后的结果为:
1 2 3 5
数据从大到小排序
def showdata(data):
for i in range(len(data)):
print(data[i], end = " ")
print()
def select(data):
print("排序前的结果为:")
showdata(data)
for i in range(len(data)-1):
for j in range(i+1, len(data)):
if data[i] < data[j]: # 比较第i个元素和第j个元素
data[i], data[j] = data[j], data[i]
print("排序后的结果为:")
showdata(data)
if __name__ == "__main__":
select([1,3,5,2])
排序前的结果为:
1 3 5 2
排序后的结果为:
5 3 2 1