数据结构算法复习

来源:互联网 发布:对外经贸知乎 编辑:程序博客网 时间:2024/05/29 19:56
 

啊黄的:
1.数据结构:是指同一数据元素类中各数据元素之间存在的关系。
2.复杂度越低效率越高
3.大小排序:O(logN)<O(N)<O(NlogN)<O(N^2)<O(2^N)
4.搜索:线性搜索:O(N)    (只需一层循环)
 二叉搜索:O(logN)(每个元素不一定都要访问一次,有顺序)
排序:冒泡、选择、插入:O(N^2)(会用到两层的循环)
  快速(二分排序):O(N*logN) (每一个元素还是要至少访问一次,比较的是无顺序的数据)

笔记:
1.*& 返回成功指针(list的核心:node*& getNodePtr() ):
  4向传递:1.本身地址,2.堆空间,3.本身空间,4,指向的地址
  如果不加上&,那么得到的仅仅是个临时指针变量了,就仅仅能改“堆空间”了,不能改本身罗。嘻嘻。
2.顺序存储,链式存储,索引存储,散列存储;
3.常用算法:曾删查改排序遍历统计索引
4.找地址:我们经常要找改对象的前一个对象的next成员的值,即可。

把单链表掌握好,其他数据结构都是可以衍变出来滴。

等会把list,stack,queue,tree等这些数据结构总结一下,即可。

5.tree. 只关系一个三角层面,然后递归即可。

*到底返回的本身,还是成员指针呢*?
如果一开始,从根节点找到了,那么就返回根节点本身,如果是之后滴东东,那么就返回那个地址对象的前一个对象的next成员即可。

算法:
1.算法复杂度:1.时间复杂度 2.空间复杂度(空间越来越不值钱咯)
2.时间复杂度:1.平均运行时间 2.最佳和最差运行情况
3.bigO 表示法(大O):复杂度越低,效率就越高。
4.搜索: 线性:O(N)  二叉:O(logN)
  排序: 冒泡,选择,插入:O(N^2)    快速:O(N*logN)

5.算法:暴力法,递归,分治法,贪心法,优化法,模拟法
老师说:学编程最好的方法就是看例子,看了就敲。(估计是瞎说的)

6.快速排序法:
 1.抽一个随机元素,置换到最后位置当做比较数,遍历比较的时候不要遍历到它来进行比较。
 2.定义一个兔子下标p-1;每当一个元素与比较书比较时,让兔子++i 加1,然后交换本元素与龟下标元素数据。
 3.最后把比较值回归到龟下标+1位置,与原数据进行交换。