【2020-07-14】选择排序
原理是:每一次从待排序的数据元素中选出最小(最大)的一个数,存放在新序列的起始位置,再从剩余待排序元素中选出最小(最大)元素,放到已排序序列的末尾,依次类推,直到所有待排序元素排序完成。
算法结构:
方法1:findSmallestElement()
选出最小的元素
方法2:selectSort()
定义新序列;
依次循环调用方法一,for i in range(len(arr)),调用方法一将每次查找到的最小元素从原序列中弹出(减少循环次数)并add到新序列末尾。
算法实现:
#第一步:写一个方法查找出列表中最小元素,并返回
def findSmallestElement(arr): smallest_element=arr[0] smallest_index=0 for i in range(1,len(arr)): if smallest_element>arr[i]: smallest_element=arr[i] smallest_index=i return smallest_index
#第二步:将第一步找到的元素插入到新的数组中,然后循环调用n-1次,完成n为数组长度的排序。
def selectSort(arr): new_arr=[] for i in range(len(arr)): smallest=findSmallestElement(arr) new_arr.append(arr.pop(smallest)) return new_arr arr=[77,3,1,6,7,8,0,12,27] print(selectSort(arr))
分析:
smallest保存的是每次返回的最小元素在位置
arr.pop(index):是将最小元素值从序列arr中弹出,通过此操作逐渐减少循环次数,最后一次需要检查的元素仅一个。
arr.append(xx)将弹出的最小元素add到新序列末尾,以此类推,完成从小到大的选择排序。选择排序是一种灵巧但低效的排序方法。

浙公网安备 33010602011771号