
算法与数据结构
文章平均质量分 57
yzdxksh
这个作者很懒,什么都没留下…
展开
-
(一)算法与数据结构的准备知识
一 理论:1.算法是数据和人类之间的桥,把数据的’关系’转换成人类所能理解的逻辑2.某位图灵奖的得主提出:程序=数据结构+算法3.数据结构可提高三方面能力:a.提高快速解决问题的能力,例如:常见的算法题在15-20分钟之内能提出合适的解决方案b.分析问题的能力,例如:用时间复杂度和空间复杂度衡量代码c.沟通能力,例如:了解常用的数据结构以与其他人交流4.书籍推荐:a原创 2017-01-06 23:13:01 · 304 阅读 · 0 评论 -
(二)数组和链表
一 理论:1.数组的特性:a.随机读效率很高,能直接算出地址,所以访问数组中任何数速度都不会相差太大b.数组的插入与删除相对较慢,由于要移动相关的大多数元素2.链表的特性:a.随机读效率低,插入与读取快二 实践:1.数组:#include int main(){ int array[] = { 5,4,3,2,13,20 }; std::原创 2017-01-07 01:30:43 · 251 阅读 · 0 评论 -
(三)反转数组
一 理论:1.目的:将形如1,2,3,4,5这样的数组,反转成5,4,3,2,12.时间复杂度:有的指令与数组长度无关,比如int left = 0 这样在循环体里面的内容与之有关循环体内运行的次数: 5-10ns 是随着n的增长而增长的在计算机里标识为:T(n)表达为O(n) ,大O用来分析线性复杂度f(n)=O(g(n)) 可原创 2017-01-07 13:56:05 · 1163 阅读 · 0 评论 -
(四)斐波那契数列
一 理论:1.斐波那契数列:每一项均为前两项之和2.除了0,1之外的通项公式:F(0)= 0,F(1)=1,f(n)=f(n-1)+f(n-2) 3.O(n)的时间归纳法:二 实践:#include int fib(int n){ if (n return n; else return fib(n-1) +原创 2017-01-07 21:50:52 · 396 阅读 · 0 评论 -
(五)约瑟夫环问题
一:理论1.约瑟夫环问题的改进: 一桌人围着圆桌吃饭,只要数到N(比如N=3)的就离开桌子,然后余下的最后一人可以得到大奖。2.用的数据结构是:循环链表3.思考:a.使用与现实问题相近的结构,来解决问题b.分析 ‘约瑟夫环问题’的时间复杂度c.以后可以尝试用别的方法比如说数组来解决约瑟夫环问题二:代码:#include struct node{原创 2017-01-13 00:52:42 · 336 阅读 · 0 评论