网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的范文:

 

标题 几种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()
随便看

 

在线学习网范文大全提供好词好句、学习总结、工作总结、演讲稿等写作素材及范文模板,是学习及工作的有利工具。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/21 8:16:57