线性查找
def search(arr, x):
for i in range(len(arr)):
if arr[i] == x:
return i
return -1
if __name__ == '__main__':
print(search(['A', 'B', 'C', 'D', 'E'], 'D'))
冒泡排序
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
print(i, j, arr)
return arr
if __name__ == '__main__':
print(bubble_sort([64, 34, 25, 12, 22, 11, 90]))
插入排序
def insertion_sort(arr):
for i in range(1, len(arr)):
for j in range(i, 0, -1):
if arr[j] < arr[j - 1]:
arr[j], arr[j - 1] = arr[j - 1], arr[j]
print(i, j, arr)
return arr
if __name__ == '__main__':
print(insertion_sort([23, 51, 436, 32, 54, 76, 6, 87, 789, 53, 6543, 5]))
堆排序
def heapify(arr, n, i):
largest = i
left = 2 * i + 1
right = 2 * i + 2
if left < n and arr[i] < arr[left]:
largest = left
if right < n and arr[largest] < arr[right]:
largest = right
if largest != i:
arr[i], arr[largest] = arr[largest], arr[i]
heapify(arr, n, largest)
print(f"n:{n}, i:{i}, largest:{largest}, left:{left}, right:{right}, arr:{arr}")
def heap_sort(arr):
n = len(arr)
for i in range(n, -1, -1):
heapify(arr, n, i)
print('***********************')
for i in range(n - 1, 0, -1):
arr[i], arr[0] = arr[0], arr[i]
print(arr)
heapify(arr, i, 0)
return arr
if __name__ == '__main__':
print(heap_sort([2, 4, 3, 6, 5, 8, 7]))