几个基本的算法
1,快排
>>> def querysocrt(array):
if len(array) < 2:
return array
privo = array[0]
less = [i for i in array[1:] if i <= privo]
greater = [i for i in array[1:] if i > privo]
return querysocrt(less) + [privo] + querysocrt(greater)
2,二分查找
>>> def binary_search(array,item):
low = 0
high = len(array) - 1
while low <= high:
mid = (low + high) // 2
guess = array[mid]
if guess == item:
return mid
if guess > item:
high = mid - 1
else:
low = mid + 1
return None
3,冒泡排序
def bibble_sort(array):
for i in range(len(array)-1):
for j in range(len(array)-i-1):
if array[j] > array[j+1]:
array[j], array[j+1] = array[j+1], array[i]
def bibble_sort(array):
for i in range(len(array)-1):
exchange = False
for j in range(len(array)-i-1):
if array[j] > array[j+1]:
array[j], array[j+1] = array[j+1], array[i]
exchange = True
if exchange:
return
4,选择排序
# 不好用的选择排序
def select_sort_simple(li):
li_new = []
for i in range(len(li)):
min_val = min(li)
li_new.append(min_val)
li.remove(min_val)
return li_new
def select_sort_simple(li):
for i in range(len(li)-1):
min_loc = i
for j in range(i,len(li))
if li[j] < li[min_loc]:
min_loc = j
if min_loc != i:
li[i],li[min_loc] = li[mic_loc],li[i]
5,插入排序
def insert_sort(li):
for i in range(1,len(li))
tmp = li[i]
j = i - 1
while j >= 0 and li[j] > tmp:
li[j+1] = li[j]
j -= 1
li[j + 1] = tmp