首页 > 编程语言 > 详细

python数据结构与算法 31 选择排序

时间:2014-04-20 01:05:17      阅读:570      评论:0      收藏:0      [点我收藏+]

选择排序

选择排序是冒泡排序的改进,一次遍历只做一次交换。它在一次遍历中找到最大的元素,结束时放到合适的位置,正如冒泡排序一样,一次遍历后最大的元素就位。第二次遍历后,第二大的元素就位,这样持续进行,需要n-1个遍历来为n个元素排序。

3显示了一整个的排序过程,一次遍历,剩余最大的元素被选中并正确就位,所以第一次选择了93,第二次选择77,第三次55,等等。后面是代码.

bubuko.com,布布扣

def selectionSort(alist):

  for fillslot in range(len(alist)-1,0,-1):

      positionOfMax=0

      for location in range(1,fillslot+1):

          if alist[location]>alist[positionOfMax]:

               positionOfMax = location

 

      temp = alist[fillslot]

      alist[fillslot] = alist[positionOfMax]

      alist[positionOfMax] = temp

 

alist = [54,26,93,17,77,31,44,55,20]

selectionSort(alist)

print(alist)

可以看出,选择排序和冒泡排序一样多的比较次数,所以它的性能依然是O(n2).不过,因为交换次数的减少,选择排序一般运行得比冒泡要快。在这个例子中,冒泡有20次交换,而选择排序只有8次。


python数据结构与算法 31 选择排序,布布扣,bubuko.com

python数据结构与算法 31 选择排序

原文:http://blog.csdn.net/python2014/article/details/24137757

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!