技术背景
《算法图解》(Grokking Algorithms)是一本广受欢迎的算法入门书籍,本书对应的代码仓库 egonSchiele/grokking_algorithms托管在 GitHub 上。该仓库为读者提供了书中代码的实现,同时还包含高分辨率的书中插图,方便读者更好地理解书中内容。
实现步骤
代码学习辅助
该仓库推荐了 Python Tutor 这个网站,它可以逐行引导你理解 Python 代码,对于学习书中代码非常有帮助。
勘误信息
仓库提供了本书的勘误页面,如果你在阅读过程中发现错误,可以参考该页面。
插图使用
仓库中包含了《算法图解》中所有高分辨率的插图,这些插图可用于非商业用途。如果你使用了这些插图,需要添加“copyright Manning Publications, drawn by adit.io”的版权声明,并且可以将其用于教学材料、演示文稿等非商业材料中。
贡献代码
如果你想为这个仓库做出贡献,可以按照以下步骤进行:
发现问题或疑问:如果你在书中发现错误或有疑问,最好通过作者网站(adit.io)上列出的邮箱联系作者,这样能更快得到回复。提出修改建议:如果你想对代码进行修改,可以直接发起一个 Pull Request(PR),作者处理 PR 的速度相对处理 Issues 会更快一些,不过处理 PR 仍然需要一些时间。有用的贡献类型:最有用的贡献包括修复现有代码中的错误、添加新语言的示例代码、随着语言的发展更新代码以及让代码更易读。不太可能合并的代码:涉及风格更改的代码不太可能被合并,添加复杂优化的 PR 则更不太可能被合并,因为该仓库的主要目的是提供易于阅读的示例,帮助人们理解概念。核心代码
由于没有具体给出代码内容,我们可以以 Python 实现简单的二分查找算法为例,展示书中可能涉及的代码风格:
def binary_search(list, item): low = 0 high = len(list) – 1 while low <= high: mid = (low + high) // 2 guess = list[mid] if guess == item: return mid if guess > item: high = mid – 1 else: low = mid + 1 return None my_list = [1, 3, 5, 7, 9] print(binary_search(my_list, 3))