转载请注明出处http://blog.youkuaiyun.com/feimengjuan/article/details/46400303
1、二分查找
#二分查找
def BinarySearch(A,begin,end,key):
index=-10
mid=(begin+end)/2
if A[mid]==key:
index=mid
if (A[mid]<key) & (begin<end):
index=BinarySearch(A, mid+1, end, key)
if (A[mid]>key) & (begin<end):
index=BinarySearch(A, begin, mid-1, key)
return index
</pre>2、插入排序<p></p><p></p><pre code_snippet_id="686724" snippet_file_name="blog_20150607_3_1166439" name="code" class="python">#插入排序
def InsertSort(A,begin,end):
for j in range(1,len(A)):
key=A[j]
i=j-1
while (i>=0) & (A[i]>key):
A[i+1]=A[i]
i=i-1
A[i+1]=key
return A
3、归并排序
#归并排序合并程序
def Merge(A,begin,mid,end):
n1=mid-begin+1
n2=end-mid
L=[]
R=[]
for i in range(0,n1):
L.append(A[begin+i])
for j in range(0,n2):
R.append(A[mid+j+1])
L.append(1000000) #左哨兵牌位
R.append(1000000) #右哨兵牌位
i=0
j=0
for k in range(begin,end+1):#这里注意range的取值是begin到end+1-1,所以range第二个参数用end+1
if L[i]<R[j]:
A[k]=L[i]
i=i+1
else:
A[k]=R[j]
j=j+1
return A
def Merge_sort(A,begin,end):
if begin<end:
mid=(begin+end)/2
Merge_sort(A,begin,mid)
Merge_sort(A,mid+1,end)
Merge(A,begin,mid,end)
return A
4、快速排序
#快速排序
def Partition(A,begin,end):
#选取主元素
x=A[begin]
i=begin
for j in range(i+1,end+1):
if A[j]<=x:
i=i+1
#交换A[i]和A[j]
temp1=A[i]
A[i]=A[j]
A[j]=temp1
#交换A[begin]和A[i]
temp1=A[begin]
A[begin]=A[i]
A[i]=temp1
return i
def QuickSort(A,begin,end):
if begin<end:
r=Partition(A,begin,end)
QuickSort(A, begin, r-1)
QuickSort(A, r+1, end)
return A
5、主程序
A=[7,8,3,5,6,4]
index=BinarySearch(A, 0, 5, 3)
if index==-10:
print "The element is not existing"
else:
print "The index is:",index
#C=InsertSort(B,0,len(B)-1)
#C=Merge_sort(A,0,len(A)-1)
C=QuickSort(A, 0, len(A)-1)
print C