排序算法之选择排序

原理:

我们假设第一个元素是最大值,与相邻元素对比,如果右侧元素比我们假设的最大元素大,那么最大元素的位置右移,直到遇到右侧的数小于最大值的情况,直接当前最大值放置到列表最后的位置.

3

5

8

6

9

我们假设3为最大元素

第一遍:

第二遍:

 代码实现

核心代码:

  for i in range(0, len(alist)-1):# 找出最大值的下标
                if alist[max_index] < alist[i+1]:
                    max_index = i +1 # 最大值下标右移
        alist[max_index], alist[len(alist)-1-j] =alist[len(alist)-1-j], alist[max_index] # 交换最大值到最右侧 

 完整代码实现:

  def sort(alist):
        for j in range(0,len(alist)-1):
            max_index = 0 # 最大值的下标,开始假设第0个元素为最大值
            for i in range(0, len(alist)-1-j):# 找出最大值的下标
                if alist[max_index] < alist[i+1]:
                    max_index = i +1 # 最大值索引右移
            alist[max_index], alist[len(alist)-1-j] =alist[len(alist)-1-j], alist[max_index] # 交换最大值到最右侧
    return alist 

 

 

上一篇:排序算法之冒泡排序

下一篇:排序算法之插入排序