冒泡
def func(list_1):
for i in range(len(list_1) - 1):
for j in range(len(list_1) - 1 - i):
if list_1[j] > list_1[j + 1]:
list_1[j], list_1[j + 1] = list_1[j + 1], list_1[j]
print("冒泡", list_1)
func([9, 8, 3, 5, 6, 4])
选择
def func1(list_1):
for i in range(len(list_1) - 1):
min = i
for j in range(i + 1, len(list_1)):
if list_1[j] < list_1[min]:
min = j
if min != i:
list_1[i], list_1[min] = list_1[min], list_1[i]
print("选择", list_1)
非递归二分查找
def func2(list_1, item):
first = 0
last = len(list_1) - 1
while first <= last:
mid = (first + last) // 2
if item == list_1[mid]:
return True
elif item < list_1[mid]:
last = mid - 1
else:
first = mid + 1
return False
li = func2([1, 2, 3, 4, 5, 6, 7], 3)
print(li)
递归二分查找
def func3(list_1, item):
if len(list_1) == 0:
return False
mid = (len(list_1) - 1) // 2
if item == list_1[mid]:
return True
elif item < list_1[mid]:
return func3(list_1[:mid], item)
else:
return func3(list_1[mid + 1:], item)
print(func3([1, 2, 3, 4, 5, 6, 7], 3))
list_1 = [9, 8, 3, 5, 6, 4]