部分排序算法python实现
来源:互联网 发布:java.io jar包下载 编辑:程序博客网 时间:2024/06/06 13:14
看了下算法导论,再加上最近在学习python,就用python把部分排序的算法实现下,供大家参考。
插入排序
def InsertSort( A ): for j in range(1,len(A)): key=A[j] i=j-1; while (i>0 and A[i]>key): A[i+1]=A[i]; i-=1; A[i+1]=key return A
合并排序
def Merge(A,p,q,r): L=A[p:q+1] R=A[q+1:r+1] L.append('Inf') R.append('Inf') i=0; j=0; for k in range(p,r+1): if L[i]<R[j]: A[k]=L[i] i+=1 else: A[k]=R[j] j+=1; return Adef MergeSort( A,p,r ): if p<r: q=int((p+r)/2) MergeSort(A,p,q) MergeSort(A,q+1,r) Merge(A,p,q,r) return A
冒泡排序
def BubbleSort( A ): for i in range(0,len(A)): for jt in range(1,len(A)-i): j=len(A)-jt if A[j]<A[j-1]: temp=A[j] A[j]=A[j-1] A[j-1]=temp return A
堆排序
def Left( i ): return i*2+1def Right( i ): return (i+1)*2def maxHeapify( A,i ,heapSize): l=Left(i) r=Right(i) if (l<=heapSize and A[l]>A[i]): largest=l else: largest=i if (r<=heapSize and A[r]>A[largest]): largest=r if (largest!=i): temp=A[i] A[i]=A[largest] A[largest]=temp; maxHeapify(A,largest,heapSize) return Adef BuildMaxHeap( A ,heapSize): for i in range(int(len(A)/2-1),-1,-1): maxHeapify(A,i,heapSize) return Adef HeapSort( A ): heapSize=len(A)-1 BuildMaxHeap(A,heapSize) for i in range(len(A)-1,0,-1): temp=A[0] A[0]=A[i] A[i]=temp heapSize-=1 maxHeapify(A,0,heapSize) return A
快速排序
def QuickSort( A,p,r ): if (p<r): q=Partition(A,p,r) QuickSort(A,p,q-1) QuickSort(A,q+1,r) return Adef Partition( A,p,r ): flag=random.randint(p,r) temp=A[r] A[r]=A[flag] A[flag]=temp x=A[r] i=p-1 for j in range(p,r): if (A[j]<=x): i+=1 temp=A[i] A[i]=A[j] A[j]=temp temp=A[i+1] A[i+1]=A[r] A[r]=temp return i+1
桶排序
def BucketSort( A ): n=len(A) B=[] for i in range(0,n): B.append([]) for i in range(0,n): B[int(n*A[i])].append(A[i]) for i in range(0,n): if len(B[i])>1: B[i]=QuickSort(B[i],0,len(B[i])-1) A=[] for i in range(0,n): if len(B[i])>0: A.extend(B[i]) return A
测试代码
A=[1,3,2,4,7,8,234,4234 ,324235, 5452, 32,4,2]InsertSort(A)print(A)B=[1,3,2,4,7,8,234,4234 ,324235, 5452, 32,4,2]MergeSort(B,0,len(B)-1)print(B)C=[1,3,2,4,7,8,234,4234 ,324235, 5452, 32,4,2]BubbleSort(C)print(C)D=[1,3,2,4,7,8,234,4234 ,324235, 5452, 32,4,2]HeapSort(D)print(D)E=[1,3,2,4,7,8,234,4234 ,324235, 5452, 32,4,2]QuickSort(E,0,len(E)-1)print(E)F=[]for i in range(0,10): F.append(random.random())F=BucketSort(F)print F
0 0
- 部分排序算法python实现
- 部分排序算法的实现
- 排序算法python实现
- 排序算法Python实现
- Python实现排序算法
- 排序算法python实现
- 采用部分快速排序算法实现数组的部分排序
- 直接排序算法python实现
- python 实现插入排序算法
- 基本排序算法:Python实现
- python实现各种排序算法
- python实现排序算法目录
- 排序算法总结-python实现
- python实现常见排序算法
- Python实现快速排序算法
- python实现快速排序算法
- Python:经典排序算法实现
- python实现经典排序算法
- 关于byte储存-128的问题
- pthread_exit()
- Android 撕开美女衣服解析
- safari(css,jquery)仿iosNative的actionsheet
- java注解学习2,注解的定义与反射调用
- 部分排序算法python实现
- django教程:django后台很巧妙的技巧
- 深入理解枚举类型之基础用法
- APP开发实战19-TCP和HTTP连接
- java内存模型与线程
- VC中给列表控件CListCtrl添加复选框
- Impala手动安装
- Java文件与IO(三)之缓冲流
- PHPSession-完全PHP5之session篇