1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python实现排序算法:冒泡排序 插入排序 选择排序 快速排序 希尔排序

Python实现排序算法:冒泡排序 插入排序 选择排序 快速排序 希尔排序

时间:2020-08-15 22:11:07

相关推荐

Python实现排序算法:冒泡排序 插入排序 选择排序 快速排序 希尔排序

独角兽企业重金招聘Python工程师标准>>>

importsys,getopt,randomdefbubble_sort(seq):foriinrange(len(seq)):forjinrange(1,len(seq)):ifseq[j-1]>seq[j]:seq[j-1],seq[j]=seq[j],seq[j-1]returnseqdefinsertion_sort(seq):foriinrange(1,len(seq)):tmp=seq[i]pos=i;forjinrange(i-1,-1,-1):ifseq[j]>tmp:seq[j+1]=seq[j]pos=jseq[pos]=tmpreturnseqdefselection_sort(seq):foriinrange(len(seq)):min_index=i;forjinrange(i,len(seq)):ifseq[j]<seq[min_index]:min_index=jseq[i],seq[min_index]=seq[min_index],seq[i]returnseqdefpartition(seq,p,l,r):pivot=seq[p]seq[p],seq[r]=seq[r],seq[p]p_pos=lforiinrange(l,r):ifseq[i]<=pivot:seq[i],seq[p_pos]=seq[p_pos],seq[i]p_pos=p_pos+1seq[p_pos],seq[r]=seq[r],seq[p_pos]returnp_posdefquick_sort(seq,left,right):ifleft<right:pivot=random.randint(left,right)mid=partition(seq,pivot,left,right)quick_sort(seq,left,mid-1)quick_sort(seq,mid+1,right)returnseqdefshell_sort(seq):incr=len(seq)/2while(incr>=1):foriinrange(incr,len(seq)):tmp=seq[i]pos=i;forjinrange(i-incr,-1,-incr):ifseq[j]>tmp:seq[j+incr]=seq[j]pos=jseq[pos]=tmpincr=incr/2returnseqdefusage():print'Usage:pythonsort.pysorttype[-q|-i|-b|-s|--shell]sequence'print'Example:pythonsort.py-q11,32,3,24,5'defmain():try:if(len(sys.argv)==1)or(len(sys.argv)!=3):raiseException()else:opts,args=getopt.getopt(sys.argv[1:],'qibs',['shell'])iflen(args)>0:seq=[]tmp=args[0].split(',')foriintmp:seq.append(int(i))else:raiseException()foroptinopts:ifopt[0]=='-q':printquick_sort(seq,0,len(seq)-1)elifopt[0]=='-i':printinsertion_sort(seq)elifopt[0]=='-b':printbubble_sort(seq)elifopt[0]=='-s':printselection_sort(seq)elifopt[0]=='--shell':printshell_sort(seq)exceptException,e:usage()printesys.exit()if__name__=="__main__":main()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。