【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到新序列末尾,以此类推,完成从小到大的选择排序。选择排序是一种灵巧但低效的排序方法。

posted @ 2020-07-14 15:50  七月泥  阅读(41)  评论(0)    收藏  举报