《算法图解》学习心得

一、前言

在这里插入图片描述

在人工智能领域,如机器学习、深度学习等,优先使用 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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT小村

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值