赞
踩
将无序列表变为有序列表
每次从列表中找到最大/最小的元素,依次放入新列表中
每次查找最小元素时,所需要的时间都为O(n),共需查找n次,则需要的总时间位O(n×n),即O(n²)
【n+(n-1)+(n-2)+…+2+1 = (1+n)*n/2 = n²/2+n/2】
时间复杂度:O(n²)
实质:将大的元素往后调,从小到大排序
原理:
选择排序有两层循环
numbers=[5,18,9,11,1]
numbers.sort()
#选择排序
numbers=[5,18,9,11,1]
for i in range(len(numbers)):
for j in range(i+1,len(numbers)):
if numbers[i] > numbers[j]:
numbers[i],numbers[j]=numbers[j],numbers[i] #快速交换
print(numbers)
print('------------------->',i)
#python实现代码 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([9, 10, 1, 6, 13])
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。