Python3学习笔记(十二)【Python冒泡排序及折半查找】
比较经典的两个算法:
def bubble(li):
for m in range(0, len(li) - 1):
for n in range(0, len(li) - 1 - m):
if li[n] > li[n + 1]:
temp = li[n]
li[n] = li[n + 1]
li[n + 1] = temp
return li
print(bubble([3, 2, 5, 1, 4]))
def halfSearch(li, key):
leftPos = 0
rightPos = len(li) - 1
mid = (leftPos + rightPos) >> 1
while li[mid] != key:
if key > li[mid]:
leftPos = mid + 1
else:
rightPos = mid - 1
if rightPos < leftPos:
return -1
mid = (leftPos + rightPos) >> 1
return mid
index = halfSearch([1, 2, 3, 4, 5], 3)
print(index)
输出:
[1, 2, 3, 4, 5]
2