当前位置:首页>python>Python算法学习分享

Python算法学习分享

  • 2026-10-24 20:02:12
Python算法学习分享

算法是什么?打个比喻就是“做菜的步骤”

想象一下你要做番茄炒蛋:
1. 打鸡蛋
2. 切番茄
3. 热锅放油
4. 先炒鸡蛋
5. 再加番茄
6. 调味出锅

这个步骤清单就是“算法”——解决特定问题的明确步骤。在编程中,算法就是告诉计算机如何解决问题的“菜谱”。

为什么学算法?三个简单理由

  1. 好的算法就像坐高铁,差的算法就像骑自行车
  2. 学会一个算法,可以在很多地方使用
  3. 很多公司会考察算法能力

五个最常用的Python算法

1. 线性查找

def linear_search(items, target):    """在列表中逐个查找目标值"""    for i in range(len(items)):        if items[i] == target:            return i  # 找到了,返回位置    return -1  # 没找到

2. 二分查找

def binary_search(numbers, target):    """在有序列表中快速查找"""    left, right = 0, len(numbers) - 1    while left <= right:        middle = (left + right) // 2  # 找中间位置        if numbers[middle] == target:            return middle        elif numbers[middle] < target:            left = middle + 1  # 目标在右边        else:            right = middle - 1  # 目标在左边    return -1# 使用示例(注意:列表必须先排序!)scores = [65, 72, 80, 88, 95, 100]print(binary_search(scores, 88))  # 输出:3

3. 冒泡排序

def bubble_sort(numbers):    """把大的数像气泡一样'冒'到后面"""    n = len(numbers)    for i in range(n - 1):        for j in range(n - 1 - i):            if numbers[j] > numbers[j + 1]:                # 交换位置                numbers[j], numbers[j + 1] = numbers[j + 1], numbers[j]    return numbers# 使用示例unsorted = [64, 34, 25, 12, 22, 11, 90]print("排序前:", unsorted)print("排序后:", bubble_sort(unsorted.copy()))

4. 递归

def factorial(n):    """计算n的阶乘:n! = n × (n-1) × ... × 1"""    if n == 1:  # 基础情况:最小套娃        return 1    else:  # 递归情况:打开一个套娃,里面还有套娃        return n * factorial(n - 1)# 使用示例print(f"5! = {factorial(5)}")  # 输出:120

5. 斐波那契数列

def fibonacci(n):    """生成斐波那契数列:每个数是前两个数之和"""    fib_sequence = [0, 1]  # 开始有一对兔子宝宝    for i in range(2, n):        next_value = fib_sequence[-1] + fib_sequence[-2]        fib_sequence.append(next_value)    return fib_sequence[:n]# 使用示例print("前10个斐波那契数:")print(fibonacci(10))# 输出:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

算法复杂度:快慢的衡量标准

  • O(1):闪电速度(不管数据多少,时间不变)
  • O(n):线性增长(数据翻倍,时间翻倍)
  • O(n²):平方增长(数据翻倍,时间变4倍)
# 对比不同算法的速度import timedef test_speed():    big_list = list(range(10000))    # 测试线性查找    start = time.time()    linear_search(big_list, 9999)    linear_time = time.time() - start    # 测试二分查找(需要先排序)    sorted_list = sorted(big_list)    start = time.time()    binary_search(sorted_list, 9999)    binary_time = time.time() - start    print(f"线性查找: {linear_time:.6f}秒")    print(f"二分查找: {binary_time:.6f}秒")test_speed()

给初学者的实用建议

  1. 先明白算法为什么这样工作
  2. 可以在纸上画出示意图辅助学习
  3. 先用少量数据测试

常见问题解答

Q: 一定要学算法吗?
A: 就像司机不一定懂修车,但懂的话能开得更好、更安全。

Q: 算法很难吗?
A: 开始可能有点难,但每个算法都是解决实际问题的智慧结晶。

Q: 每天学多久?
A: 每天30分钟,理解一个概念或写一个算法,效果比周末突击更好。

记住:学习算法就像学游泳,开始时可能喝几口水,但一旦掌握,就能自由遨游。Python提供了清晰的语法让你专注于算法逻辑本身,这是学习算法的绝佳起点。

开始写你的第一个算法吧!

最新文章

随机文章