1. 二分查找
2. 冒泡排序
3. 快速排序
4.
1. 常见算法
1. 二分查找
# 普通方法
def binary(alist, data):
first, last = 0, len(alist)- 1
while first <= last:
middle_index = (first + last) // 2
if alist[middle_index] > data:
last = middle_index - 1
elif alist[middle_index] < data:
first = middle_index + 1
else:
return True
return False
li = [2, 4, 5, 6, 7, 9, 14, 15]
binary(li, 9)
# 递归查找
def binary(alist, data):
n = len(alist)
if n < 1:
return False
mid = n // 2
if alist[mid] > data:
return binary(alist[0: mid], data)
elif alist[mid] < data:
return binary(alist[mid+1: ], data)
else:
return True
2. 冒泡排序
def bubbleSort(alist):
for passnum in range(len(alist) - 1, 0, -1): # range(11, 0, -1)
for i in range(passnum): # range(11)
if alist[i] > alist[i + 1]:
alist[i], alist[i + 1] = alist[i + 1], alist[i]
return alist
3. 快速排序
def quick_sort(l1):
# l1 = the_list
n = len(l1)
if n < 2:
return l1
# 选取基准值
mid = l1[n // 2]
# print(mid)
left, right = [], []
# 移除基准值
l1.remove(mid)
for item in l1:
if item >= mid:
right.append(item)
else:
left.append(item)
return quick_sort(left) + [mid] + quick_sort(right)
lis = [2, 1, 67, 34, 23, 56, 78, 43, 14, 8, 5]
print(quick_sort(lis))
4. 插入排序