选择排序是一种灵巧的算法,但是其速度不是很快。
选择排序算法的核心思想是在一个乱序的需要排序的数组中,选择一个最小的数放到另外一个数组中,第二次从数组中选出一个次小的,依次重复,直到把第一个数组中的所有数据排序完成。
时间复杂度的计算,每次需要在第一个数组中遍历一遍数据,找到最小的数据,所以每次的时间复杂度为O(n)。需要循环n次才能排序完成,所以时间复杂度为O(n^2)。
python示例代码
def findSamllest(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 select_search(arr): #快速排序算法
newArr = [] #创建一个数组
for i in range(len(arr)):
smallest_index = findSamllest(arr)
newArr.append(arr.pop(smallest_index)) #从旧的数组中删除,并且加入新数组中
return newArr
list = [5, 3, 6, 2, 10]
print(select_search(list))