python代码小实践之data_structure_and_algorithm
二分查找
def bin_sort(l_head,l_index):
length = len(l_head)
for i in range(length-1):
if i == 0:
continue
else:
head = 0
tail = i - 1
temp_h = l_head[i]
temp_i = l_index[i]
while head <= tail:
mid = (head+tail)/2
if(l_head[mid]<temp_h):
head = mid + 1
else:
tail = mid - 1
l_head[head+1:i+1] = l_head[head:i]
l_index[head+1:i+1] = l_index[head:i]
l_head[head] = temp_h
l_index[head] = temp_i
'''
Created on 2012-7-5
@author: mainred
'''
归并排序
def merge(A, p, q, r):
"""merge sorted sequence A[p,...,q] and A[q+1,...,r]
"""
l1 = A[p:q+1]
l2 = A[q+1:r+1]
i1 = i2 = 0
i = p
while i1<len(l1) and i2<len(l2):
if l1[i1]<l2[i2]:
A[i] = l1[i1]
i1 += 1
else:
A[i] = l2[i2]
i2 += 1
i += 1
if i1 == len(l1):
A[i:r+1] = l2[i2:len(l2)]
if i2 == len(l2):
A[i:r+1] = l1[i1:len(l1)]
return A
def merge_sort(A, p, r):
if p < r:
m = (p+r)/2
merge_sort(A, p, m)
merge_sort(A, m+1, r)
merge(A, p, m, r)
插入排序
'''
Created on 2012-7-5
@author: mainred
'''
def insert_sort(A):
"""Implement insert sort on A
Args:
A: A list to be sorted
Returns:
A list containing sorted parameters.
For example: [1, 4, 5, 9]
"""
if A is None or len(A)<3:
return A
l = len(A)
for i in range(2,l):
A[0] = A[i]
n = i-1
while(A[0]<A[n]):
A[n+1] = A[n]
n -= 1
A[n+1] = A[0]
return A