排序算法之选择排序法

选择排序法



前言

选择排序法(Selection Sort)也算是枚举法的应用,就是反复从末排序的数列中取出最小的元素,加入另一个数列中,最后的结果即为已排序的数列。选择排序法可使用两种方式排序,即在所有的数据中,若从小到大排序,则将最大值放入第一个位置;若是从大到小排序,则将最大值放入最后一个位置,例如,一开始在所有的数据中挑选一个最小项放在第一个位置(假设是从小到大排序),在从第二项开始挑选一个最小项放在第2个位置,以此重复,直到完成排序为止。


一、选择排序的过程

使用数列(57,20,97,82,6)来演示排序的过程。
原始数据排列如下图所示:
原始数据
1、首先找到需要排序的数列中的最小值,并且与数列的第一个元素进行交换。
第一次扫描

2、从第二个元素开始找,找到不包含第一个元素的剩下数列的最小值,在与数列的第二个元素交换。
第二次扫描

3、从第三个元素开始找,找到不包含第一个、第二个元素的剩下数列的最小值,在与数列的第三个元素交换。
第三次扫描

4、从第四个元素开始找,找到不包含第一个、第二个、第三个元素的剩下数列的最小值,在与数列的第四个元素交换。
第四次扫描

5、依次循环,直到完成排序。

二、代码实现

1.python实现

代码如下(示例):

def selection_sort(arr):
    for i in range(len(arr) - 1):
        min_index = i
        for j in range(i + 1, len(arr)):
            if arr[j] < arr[min_index]:
                min_index = j
        arr[i], arr[min_index] = arr[min_index], arr[i]
        print('\n第%d次排序结果为:'%(i+1),end='')
        showdata(arr)
    return arr
#打印数据
def showdata(data):
    for i in range(len(data)):
        print('%3d'%data[i],end='')

data=[16,25,39,27,12,8,45,63]
print('原始数据为:')
showdata(data)
result = selection_sort(data)
print('\n排序后的数据为:')
print(result)

2.结果

上述的代码运行后的结果,如下图所示:
实验结果


参考书本:
吴灿铭,胡昭民,《图解算法使用Python》第2版,清华大学出版社。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值