关于Python排序算法-选择排序(Select Sort)

关于Python排序算法-选择排序(Select Sort)

#coding=utf-8

# 选择排序
'''
选择排序算法的原理如下:
对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小则用一个变量min_index来记住他的位置,
接着第二次比较,前面“后一个元素”现变成了“前一个元素”,
继续跟它的“后一个元素”进行比较如果后面的元素比他要小则用变量min_index记住它在数组中的位置(下标),
等到循环结束的时候,我们应该找到了最小的那个数的下标,然后进行判断,如果这个元素的下标不是第一个元素的下标,
就让第一个元素跟它交换一下值,这样就找到整个数组中最小的数。
然后找到数组中第二小的数,让它跟数组中第二个元素交换一下值,以此类推。
'''

def select_sort(li):
    for i in range(len(li)):
        # 第i趟开始时 无序区:li[i:]
        # 找无序区最小值,保存最小值的位置
        print("第%s趟" % (i + 1))
        min_index = i
        for j in range(i + 1, len(li)):
             if li[j] < li[min_index]:
                  min_index = j
                  print("min_index %s" %(j))

        li[min_index], li[i] = li[i], li[min_index]
        print("第%s次比对%s" %(j, li))

import random
# range()函数中有一个参数,则从0开始。
# range()函数中有两个参数,则将第一个参数做为起始位,第二个参数为结束位
li = list(range(9))

#print(li)
# 将序列的所有元素随机排序
random.shuffle(li)
print("排序准备%s" % li)

select_sort(li)
print("排序结果%s" % li)

发表回复

您的电子邮箱地址不会被公开。