几种Python实现的排序算法

您好,欢迎来到百闽人生网登录 注册

百闽首页 | 考试日历 | 百闽娱乐 | 书信频道 | 节日庆典 | 语录句子 | 免费发布培训课程

百闽人生网

百闽人生网 > 培训新闻 > 电脑/IT > 几种Python实现的排序算法

几种Python实现的排序算法

这几种算法包括了:冒泡排序,插入排序,选择排序,快速排序和希尔排序,Python版本:2.7.3,具体代码如下:

import sys, getopt, random

def bubble_sort(seq):

for i in range(len(seq)):

for j in range(1,len(seq)):

if seq[j-1]>seq[j]:

seq[j-1], seq[j]= seq[j], seq[j-1]

return seq

def insertion_sort(seq):

for i in range(1,len(seq)):

tmp=seq[i]

pos=i;

for j in range(i-1,-1,-1):

if seq[j]>tmp:

seq[j+1]=seq[j]

pos=j

seq[pos]=tmp

return seq

def selection_sort(seq):

for i in range(len(seq)):

min_index=i;

for j in range(i,len(seq)):

if seq[j]<seq[min_index]:

min_index=j

seq[i],seq[min_index]=seq[min_index],seq[i]

return seq

def partition(seq,p,l,r):

pivot = seq[p]

seq[p],seq[r]=seq[r],seq[p]

p_pos = l

for i in range(l,r):

if seq[i]<=pivot:

seq[i],seq[p_pos]=seq[p_pos],seq[i]

p_pos=p_pos+1

seq[p_pos],seq[r]=seq[r],seq[p_pos]

return p_pos

def quick_sort(seq,left,right):

if left < right:

pivot = random.randint(left,right)

mid = partition(seq,pivot,left,right)

quick_sort(seq,left,mid-1)

quick_sort(seq,mid+1,right)

return seq

def shell_sort(seq):

incr = len(seq)/2

while(incr>=1):

for i in range(incr,len(seq)):

tmp=seq[i]

pos=i;

for j in range(i-incr,-1,-incr):

if seq[j]>tmp:

seq[j+incr]=seq[j]

pos=j

seq[pos]=tmp

incr = incr/2

return seq

def usage():

print "Usage: python sort.py sorttype[-q|-i|-b|-s|--shell] sequence"

print "Example: python sort.py -q 11,32,3,24,5"

def main():

try:

if(len(sys.argv)==1) or (len(sys.argv)!=3):

raise Exception()

else:

opts,args=getopt.getopt(sys.argv[1:],"qibs",["shell"])

if len(args)>0:

seq=[]

tmp=args[0].split(",")

for i in tmp:

seq.append(int(i))

else:

raise Exception()

for opt in opts:

if opt[0] =="-q":

print quick_sort(seq,0,len(seq)-1)

elif opt[0] =="-i":

print insertion_sort(seq)

elif opt[0] =="-b":

print bubble_sort(seq)

elif opt[0] =="-s":

print selection_sort(seq)

elif opt[0] =="--shell":

print shell_sort(seq)

except Exception,e:

usage()

print e

sys.exit()

if __name__ =="__main__":

main()


首页 1 2 下页 

关于我们 | 招生合作 | 负责声明 | 常见问题 | 诚聘英才 | 联系我们

Copyright©2014 www.bminlife.com 百闽人生网 版权所有©百闽人生网 闽ICP备14001301号
本文标题:几种Python实现的排序算法
分站加盟及广告服务QQ:1476191318
友情提示:本站所有信息均由本站注册会员免费发布,如涉及版权问题或虚假信息请及时与本站联系。——我们一直在追求真实!