用Python实现基本排序算法02——选择排序
2015-08-27 17:47
706 查看
一、选择排序的核心思想
(以从小到大排序为例,假设共计N个元素)
冒泡排序在每次发现左边的值更大之后,都会进行一次交换。(详见:http://blog.csdn.net/pospro/article/details/47984469)
而选择排序则是首先遍历一遍,找到最大的值的坐标之后,再将该值与适当位置相交换。“选择”最大值出现的位置,应该就是选择排序得名的原因吧
思路:
计划按从小到达排列,即最大的值要放到最右边
1. 遍历全部元素,找到最大值所在位置,若最大值不在最右侧(即[N-1]),则将该位置的数与[N-1]交换
2. 遍历元素0~N-2,找到最大值所在位置,并将其交换至[N-2]
...
N-1 遍历元素0~1,找到最大元素,并确保其出位置1处
二、程序实例
三、测试
如果有兴趣,可以把程序中print语句前面的#去掉,运行下面的测试程序(测试程序见http://blog.csdn.net/pospro/article/details/47984469)
(以从小到大排序为例,假设共计N个元素)
冒泡排序在每次发现左边的值更大之后,都会进行一次交换。(详见:http://blog.csdn.net/pospro/article/details/47984469)
而选择排序则是首先遍历一遍,找到最大的值的坐标之后,再将该值与适当位置相交换。“选择”最大值出现的位置,应该就是选择排序得名的原因吧
思路:
计划按从小到达排列,即最大的值要放到最右边
1. 遍历全部元素,找到最大值所在位置,若最大值不在最右侧(即[N-1]),则将该位置的数与[N-1]交换
2. 遍历元素0~N-2,找到最大值所在位置,并将其交换至[N-2]
...
N-1 遍历元素0~1,找到最大元素,并确保其出位置1处
二、程序实例
def selectionSort(alist): n=len(alist) for i in range(n,1,-1): # i=(n,n-1,n-2.....2) maxpos=0 for j in range(i): #j=(0,1,2,....i-1) if alist[maxpos]<alist[j]: maxpos=j if not maxpos==i-1: # 若最大的数不在未排序数的最后一个,则进行交换 alist[maxpos],alist[i-1]=alist[i-1],alist[maxpos] #print alist
三、测试
如果有兴趣,可以把程序中print语句前面的#去掉,运行下面的测试程序(测试程序见http://blog.csdn.net/pospro/article/details/47984469)
相关文章推荐
- python 倒计时 9,8,7,。。。。。。0
- 皮尔逊相关系数的计算(python代码版)
- python annotateit 安装依赖包
- python——处理xls表格
- 小甲鱼Python第八讲课后题
- python 输入print 和 输出raw_input
- PHP 和 Python实现Project Euler 1、2题
- python中的排序
- python 使用文件运行方式
- 9.9 Python 文档字符串
- 轻松python文本专题-maketrans和translate
- 轻松python文本专题-maketrans和translate
- 利用python爬取海量疾病名称百度搜索词条目数的爬虫实现
- python第三天学习笔记
- 小甲鱼Python第六讲课后题
- python requests encoding
- python 发送邮件
- Python数据库ORM SQLAlchemy 0.7学习笔记(7) 关系
- 一小时学会用Python Socket 开发可并发的FTP服务器
- Python数据库ORM SQLAlchemy 0.7学习笔记(6) 查询