1.数据结构:带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系。
a)数据的逻辑结构(常见4种):反映数据元素前后间关系的数据结构,而与他们在计算机中的存储位置无关
包括:集合,线性结构,树型结构,图型结构
集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;
线性结构:数据结构中的元素存在一对一的相互关系;
树形结构:数据结构中的元素存在一对多的相互关系;
图形结构:数据结构中的元素存在多对多的相互关系。
b)数据的物理结构(存储结构,常见4种):指数据的逻辑结构在计算机存储空间的存放形式
c)按照数据的逻辑结构对其进行简单的分类,包括线性结构和非线性结构两类
常用的存储结构有顺序存储、链式存储、索引存储和哈希存储等
d)注意:一维数组是线性结构,而二/多维数组不是线性结构
f)常用的数据结构:数组,栈,队列,链表,树,图,堆,散列(Hash)
2.算法:解决问题的方法
a)算法往往是针对数据结构的
b)算法的优劣主要从时间复杂度和空间复杂度来考虑
c)时间复杂度:时间针对问题(数据)规模的变化而变化的规律.表示法:O(fx),读Big O,会忽略常数项和低次项。如访问单个元素:数组是的O(1),单链表是O(n).
3.常见排序
记忆法:
选泡插,
快归堆希统计基,
恩方恩老恩一三,
对恩加K恩乘K,
不稳稳稳不稳稳,
不稳不稳稳稳稳
4.如何写算法
a)由简单到复杂
b)由局部到整体
c)由精糙到精细
变更更名,语句合并,边界处理
5.选择排序:现实中人的常见思维,比如按低到高排队,但在程序中不常用,因为复杂度为N^2还不稳。
1.递归:主要是要找到公式和递归的停止点
2.双向冒泡(鸡尾酒):比较次数为原长度的一半,并且两头比较
3.冒泡:
4.约瑟夫环: