02 什么是编程:算法+数据结构

编程,简单的就是 算法+ 数据结构
当然可以!我们可以用一个非常生活化的比喻,把“编程”“算法”“数据结构”讲得像做饭一样简单。


一、理解编程

✅ 一句话理解:

编程就是教电脑怎么一步步帮你做事,算法是你想出来的“做事步骤”,数据结构是你用来“装东西”的碗、盘子、保鲜盒。


🧑🍳 比喻开始:你要做一道“西红柿炒鸡蛋”

1. 编程 = 整个做饭过程

你站在厨房里,从拿食材到出锅,每一步都要想清楚、按顺序做:

  • 先洗西红柿 → 切西红柿 → 打鸡蛋 → 点火 → 倒油 → 炒 → 出锅
    编程就是把这一整套步骤,用电脑能听懂的语言(比如 Python、Java)写下来,让电脑自己去“做这道菜”。

2. 算法 = 你脑子里“怎么炒”的那套方法

同样是西红柿炒鸡蛋,不同的人有不同做法:

  • 有人先把鸡蛋炒熟盛出来,再炒西红柿,最后混合;
  • 有人一起倒进去炒。
    这些不同的“做法步骤”就是算法。
    算法没有绝对的对错,只有“好不好吃”(效率高不高、资源省不省)。

3. 数据结构 = 你装食材的碗、盘子、保鲜盒

  • 鸡蛋打在碗里,西红柿切好放盘子里,盐放在小调料罐
    如果乱放:把鸡蛋直接放锅里、西红柿丢地上,那就乱套了。
    数据结构就是你在电脑里“放东西”的方式。
  • 想按顺序排队?用“列表”。
  • 想快速查找?用“字典”。
  • 想先进后出?用“栈”(就像一摞盘子,只能从最上面拿)。

🎯 小白总结一句话:

**编程就是写“菜谱”,包括:

  • 算法是“做菜步骤”,
  • 数据结构是“装食材的容器”。**

只要你能把一件事拆成步骤、想清楚怎么装东西,你就已经在编程了!


二、举例

下面用 3 个“秒懂”小例子,介绍下「算法 + 数据结构」


1. 数据结构: list ——「盘子」里按顺序放鸡蛋

# 盘子:先把鸡蛋一个个放进去
pan = []                       # 空盘子
for i in range(5):
    pan.append(f'鸡蛋{i+1}号')  # 往盘子里放鸡蛋
print('出锅顺序:', pan)

运行结果

出锅顺序: ['鸡蛋1号', '鸡蛋2号', '鸡蛋3号', '鸡蛋4号', '鸡蛋5号']

一句话:list 就是一条“有序长队”,谁先放谁在前。


2. 算法:两种“找最大鸡蛋”的方法

import random, time

pan = [random.randint(40, 70) for _ in range(100_000)]  # 10万个随机克重的鸡蛋

# 方法1:Python 内置算法(C 语言写的,极快)
t0 = time.time()
print('最大鸡蛋:', max(pan), '克,耗时:', time.time() - t0, '秒')

# 方法2:自己写“擂台赛”算法
t0 = time.time()
max_egg = pan[0]
for egg in pan:
    if egg > max_egg:
        max_egg = egg
print('最大鸡蛋:', max_egg, '克,耗时:', time.time() - t0, '秒')

一句话:同一个问题可以有不同的“步骤”(算法),速度差很多。


3. 数据结构 + 算法:dict ——「冰箱」秒找食材

# 冰箱:名字 → 位置
fridge = {
    '西红柿': '上层左门',
    '鸡蛋': '中层抽屉',
    '葱花': '下层保鲜盒'
}

# 算法:直接“按名取物”,一步到位
need = ['鸡蛋', '西红柿']
for item in need:
    print(f'{item} 在 {fridge[item]}')

运行结果

鸡蛋 在中层抽屉  
西红柿 在上层左门

一句话:dict 就像“带标签的冰箱”,找东西永远只要 1 步。


30 秒总结

  • 把东西「怎么放」——数据结构(list / dict / …)
  • 把问题「怎么做」——算法(for 擂台 / max / …)
  • 把两者用 Python 写出来——就是在「编程」。

三、数据结构中的数据来自哪里

把“数据结构”想成一个空抽屉柜,数据就是你要放进去的衣服
衣服(数据)从哪来?给你 4 种最最常见的“进货渠道”,一句话就能懂。


1. 写死——“衣服出厂直接缝死在抽屉里”

# 抽屉一打开,衣服已经焊在里面
wardrobe = ['T恤', '牛仔裤', '卫衣']

场景:小程序、Demo、考试题,图方便,直接写。
缺点:想换款式得拆柜子(改代码)。


2. 文件——“去楼下快递柜拿衣服”

# 衣服在 csv 文件里,一行一件
with open('clothes.csv', encoding='utf-8') as f:
    wardrobe = [line.strip() for line in f]

场景:本地 Excel、日志、配置。
优点:换数据不换代码,改文件即可。


3. 数据库——“去大型仓库调货”

import sqlite3
conn = sqlite3.connect('shop.db')
wardrobe = [row[0] for row in conn.execute("SELECT name FROM clothes")]
conn.close()

场景:真正上线的系统,数据量大、多人共用。
优点:存取快、能搜索、能统计。


4. 网络——“让无人机空投最新款”

import requests
url = 'https://api.shop.com/clothes'
wardrobe = requests.get(url).json()   # 一键到货

场景:手机 App、网页、小程序,实时拉新数据。
优点:永远拿到最新款;缺点:没网就“裸奔”。


10 秒总结

来源 比喻 一句话特点
写死 衣服焊死在抽屉 最快,最死板
文件 快递柜取衣服 改文件即可更新
数据库 仓库调货 量大、多人、安全
网络 无人机空投 实时最新,依赖网速

空抽屉柜(数据结构)长一样,衣服(数据)从哪来,你说了算!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容