- 博客(5)
- 收藏
- 关注
原创 (五)约瑟夫环问题
一:理论 1.约瑟夫环问题的改进: 一桌人围着圆桌吃饭,只要数到N(比如N=3)的就离开桌子,然后余下的最后一人可以得到大奖。 2.用的数据结构是:循环链表 3.思考: a.使用与现实问题相近的结构,来解决问题 b.分析 ‘约瑟夫环问题’的时间复杂度 c.以后可以尝试用别的方法比如说数组来解决约瑟夫环问题 二:代码: #include struct node{
2017-01-13 00:52:42
336
原创 (四)斐波那契数列
一 理论: 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
原创 (三)反转数组
一 理论: 1.目的: 将形如1,2,3,4,5这样的数组,反转成5,4,3,2,1 2.时间复杂度: 有的指令与数组长度无关,比如int left = 0 这样 在循环体里面的内容与之有关 循环体内运行的次数: 5-10ns 是随着n的增长而增长的 在计算机里标识为: T(n) 表达为O(n) ,大O用来分析线性复杂度 f(n)=O(g(n)) 可
2017-01-07 13:56:05
1163
原创 (二)数组和链表
一 理论: 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
原创 (一)算法与数据结构的准备知识
一 理论: 1.算法是数据和人类之间的桥,把数据的’关系’转换成人类所能理解的逻辑 2.某位图灵奖的得主提出:程序=数据结构+算法 3.数据结构可提高三方面能力: a.提高快速解决问题的能力,例如:常见的算法题在15-20分钟之内能提出合适的解决方案 b.分析问题的能力,例如:用时间复杂度和空间复杂度衡量代码 c.沟通能力,例如:了解常用的数据结构以与其他人交流 4.书籍推荐: a
2017-01-06 23:13:01
303
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人