思想:每次遍历列表,选择一个最大或者最小的数,然后将该数放在列表前面,
整个列表可以分为2部分:左边为每次选择的最大/最小数,右边等待选择的数据.
这个过程需要n-1趟,最后一个数肯定是最大/最小的数。
#!/usr/bin/env python #-*- coding:utf-8 -*- ''' 理解排序原理 节约空间:原地排序 ''' def select_sort(li): for i in range(len(li)-1): # 第几趟 print('第几趟:', i) small_idx = i # 中间变量, 记录最小值的索引 for j in range(i+1, len(li)): # 遍历未排序的列表, 列表的左边是排好序的. if li[j] < li[small_idx]: small_idx = j li[i], li[small_idx] = li[small_idx], li[i] # 交换值的位置 print(li) li = [9,8,7,6,5,4,3,2,1] select_sort(li)