#希尔排序defshellSort(arr):
length=len(arr)
gap=length//2while gap>0:
#插入排序for i in range(gap,length):
key=arr[i]
j=i-gap
while j>=0:
if key<arr[j]:
arr[j+gap]=arr[j]
arr[j]=key
j-=gap
gap=gap//2return arr
归并排序
#归并排序defmerge(l,r):
arr=[]
while l and r:
arr.append(l.pop(0) if l[0]<=r[0] else r.pop(0))
while l:
arr.append(l.pop(0))
while r:
arr.append(r.pop(0))
return arr
defmergeSort(arr):
length=len(arr)
mid_index=length//2if length<=1:
return arr
l=mergeSort(arr[mid_index:])
r=mergeSort(arr[:mid_index])
return merge(l,r)
L6=[0,9,8,7,6,5,4,3,2,1]
print('mergeSort:%s'%mergeSort(L6))
堆排序
#堆排序defheapify(heap,heap_size,root):
left=root*2+1
right=left+1
larger=root
if left<heap_size and heap[larger]<heap[left]:
larger=left
if right<heap_size and heap[larger]<heap[right]:
larger=right
if larger!=root:
heap[larger],heap[root]=heap[root],heap[larger]
heapify(heap,heap_size,larger)
defbuildHeap(heap):
heap_size=len(heap)
for i in range((heap_size-2)//2,-1,-1):
heapify(heap,heap_size,i)
defheapSort(heap):
buildHeap(heap)
for i in range(len(heap)-1,-1,-1):
heap[i],heap[0]=heap[0],heap[i]
heapify(heap, i, 0)
return heap
L8=[0,9,8,7,6,5,4,3,2,1]
print('heapSort:%s'%heapSort(L8))