选择排序顾名思义就是选择你需要的元素。比如说在一组数列中选择最小或者最大的数存放在数列的开头。那么如何做到完美所想的那样。下面以有小到大排列讲解。假如alist = [23 4 15 55 43]是一个待排序数列
首先,记录一个最小数的位置,方便起见,我们就用一个变量pre标记一个待排数列中的第一个元素的位置为最小的数的位置(这是假设第一个数最小,此时pre=0)。将这个位置所在的数与后面的数分别比较,如果alist[pre] 比后面的数还要打,就将pre标记这个比alist[pre]还要小的数,第一次比较之后,如果pre一开始标记的位置变了,即if pre 不等于0,就要执行alist[0],alist[pre] = alist[pre],alist[0](即将两个元素调换),如果等于0 ,不需要改变,经过上述过程,可以得出待排序数列中的最小的数,并且已经把它放在了第一个位置。接下里排序len(alist)-1个元素,重复上述操作。说白了就是执行for循环,
def select_sort(alist):
for i in range(len(alist)-1):
pre = i
for j in range(i+1,len(alist)):
if alist[pre] > alist[j]:
#当前所标记的最小的数与当前位置的后面的数进行比较,如果大于后面的数,调换标记
pre = j
if pre != i:
alist[i], alist[pre] = alist[pre], alist[i]
#这一行执行的是将所找到的最小数放到最开始标记的那个位置
def main():
li = [23 4 15 55 43]
select_sort(li)
print(li)
if __name__ == "__main__":
main()