Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

#python数据结构与算法

学了栈之后,你就知道,很多涉及后入先出的问题,例如函数递归就是个栈模型、Android的屏幕跳转就用到栈, 很多类似的东西,你就会第一时间想到:我会用这东西来去写算法实现这个功能。 学了队列之后,你就知道,对于先入先出要排队的问题,你就要用到队列,例如多个网络下载任务, 我该怎么去调度它们去获得网络资源呢?再例如操作系统的进程(or线程)调度,我该怎么去分配资源(像CPU)给多个任务呢? 肯定不能全部一起拥有的,资源只有一个,那就要排队!那么怎么排队呢?用普通的队列?但是对于那些优先级高的线程怎么办? 那也太共产主义了吧,这时,你就会想到了优先队列,优先队列怎么实现?用堆,然后你就有疑问了,堆是啥玩意?
学了顺序表和链表,你就知道,在查询操作更多的程序中,你应该用顺序表;而修改操作更多的程序中, 你要使用链表;而单向链表不方便怎么办,每次都从头到尾好麻烦啊,怎么办?你这时就会想到双向链表or循环链表。

##数据结构 数据是一个抽象的概念,将其进行分类后得到程序设计语言中的类型。如:int,float,char等等

数据元素之间不是独立的,存在特定的关系,这些关系即结构 数据结构指数据对象中数据元素之间的关系

数据的逻辑结构

  • 集合:数据元素间除 “同属一个结合”外,无其他关系
  • 线性结构:一个对一个,如线性表,包括栈、队列
  • 树形结构:一个对多个,如树
  • 图状结构:多个对多个,如图

数据的物理结构 存储结构可分为四大类:顺序、链式、索引、散列 最常用的存储结构:

  • 顺序存储结构 借助元素在存储器中的相对位置来表示数据元素间的逻辑关系
  • 链式存储结构 借助指示元素存储地址的指针表示数据元素间的逻辑关系

数据的操作运算
数据运算是在数据的逻辑结构上定义的操作,在数据的存储结构上实现 最常用的数据运算有五种: 插入、删除、修改、查找、排序

##算法 算法是独立存在的一种解决问题的方法和思想。 对于算法而言,语言并不重要,重要的是思想。

算法与数据结构的区别

数据结构只是静态的描述了数据元素之间的关系 高效的程序需要在数据结构的基础上设计和选择算法 程序 = 数据结构 + 算法
总结: 算法是为了解决实际问题而设计的 数据结构是算法需要处理的问题载体

算法的五大特性

输入: 算法具有0个或多个输入
输出: 算法至少有1个或多个输出
有穷性: 算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步骤可以在接收的实际内完成
确定性:算法中的每一步都有确定的含义,不会出现二义性
可行性:算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成