排序算法—选择排序算法分析与实现(Python)

December 23, 2015 12:31 PM

思想
选择排序的思想非常直接,不是要排序么?那好,我就从所有序列中先找到最小的,然后放到第一个位置。之后再看剩余元素中最小的,放到第二个位置……以此类推,就可以完成整个的排序工作了。可以很清楚的发现,选择排序是固定位置,找元素。相比于插入排序的固定元素找位置,是两种思维方式。不过条条大路通罗马,两者的目的是一样的。
简单排序处理流程:

( 1 )从待排序序列中,找到关键字最小的元素;
( 2 )如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;
( 3 )从余下的 N - 1 个元素中,找出关键字最小的元素,重复( 1 )、( 2 )步,直到排序结束。
这里写图片描述

#SeleteSort.py
#王渊
#2015.12.21
#Email:wyxidian@gmail.com

from pylab import *


def SeleteSort(data):
    length = data.__len__()                             #获取数据长度
    idx = True                                          #标记依次遍历是否有数据交换,如果没有,排序完成
    for i in range(length):
        idx = i
        for j in range(i,length):
            if(data[j]<data[idx]):                      #如果当前值小于下一个值,记录索引
                idx = j
        data[i],data[idx] = data[idx],data[i]           #交换顺序,一次交换
    return data


data = array([48,1,16,62,73,88,24,59,99,0,35])
print("The original data is : ", data)
data = SeleteSort(data)
print("The result of sorted data is : ", data)

运行结果:

The original data is :  [48  1 16 62 73 88 24 59 99  0 35]
The result of sorted data is :  [ 0  1 16 24 35 48 59 62 73 88 99]
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值