您的位置:首页 > 编程语言 > Python开发

用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处

二、程序实例

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: