一、前言
在人工智能领域,如机器学习、深度学习等,优先使用 Python 语言进行开发,算法清晰自然,数据分析库齐全。
同理,在数据结构与算法的基础方面,从 Python 入手,能很好掌握各类基础算法。
之前使用 C -> C++ -> Java,体验不好。臃肿的语法上的障碍,徒增理解难度。而 Python 基本是伪代码的难度了。
参考资料:
《图解算法》
- 缺点:
使用 Python2 写
部分算法不够严谨- 本文:
使用 Python3 写
修复算法特殊情况的 bug
二、内容
1.二分查找法
def binary_search(ordered_array, goal):
low = 0
high = len(ordered_array) - 1
while low <= high:
mid = int((low + high) / 2)
guess = ordered_array[mid]
# print(guess)
if guess == goal:
return guess
if guess < goal:
low = mid - 1
else:
high = mid + 1
return None
if __name__ == '__main__':
print(binary_search([1, 2, 3, 4, 5], 2))
2.选择排序
def find_smallest_index(arr):
smallest = arr[0]
smallest_index = 0
for i in range(1, len(arr)):
if arr[i] < smallest:
smallest = arr[i]
smallest_index = i
return smallest_index
def selection_sort(arr):
sorted_arr = []
for i in range(len(arr)):
smallest_index = find_smallest_index(arr)
sorted_arr.append(arr.pop(smallest_index))
return sorted_arr
if __name__ == '__main__':
print(selection_sort([3, 5, 4, 0, 7, 3, 8, 7, 8]))
3.递归算法
"""
可以理解为内部自动完成值栈
优点:思路清晰
缺点:计算时间、存储空间要更多
"""
# 阶乘
def