美文网首页
《算法导论》笔记(一)

《算法导论》笔记(一)

作者: 好之者不如乐之者 | 来源:发表于2021-11-18 23:24 被阅读0次

第一章

练习1.1

\color{red}{1.1-1}

Ans:

给学生成绩进行排名需要用到排序;TBD
\color{red}{1.1-2}

Ans:

工作量;完成度;……
\color{red}{1.1-3}

Ans:

栈:
栈的优势在于可以按照将一个序列原来的顺序保存下来,能很方便地按顺序操作;栈的局限在于无法从中间取出想要的元素,只能按照原始顺序操作
\color{red}{1.1-4}

Ans:

相似之处:同样要求每一个节点最多只能经过一次,同时要求点到点的最短路径
不同之处:交通图最短路并没有要求经过每一个十字路口并回到起始十字路口,但是旅行商问题要求经过每一个点,同时还要回到起始点

P.S.:

旅行商问题:给n个点,求从起始点出发经过每一个点一次并回到起始点的最短路径,具体内容见:https://baike.baidu.com/item/%E6%97%85%E8%A1%8C%E5%95%86%E9%97%AE%E9%A2%98/7737042?fr=aladdin
\color{red}{1.1-5}

Ans:

要求最佳解:TBD(非现实生活:火箭发射参数必须精确到最佳程度)
要求近似最佳解:买鞋42,42.3,42.5码没有很大的区别,都可以穿

练习1.2

\color{red}{1.2-1}

Ans:

需要算法内容的应用如抖音;算法的功能在于根据用户看过视频的标签给用户进行类似视频/广告推送

P.S.:

物联网应用层:分为“数据”与“应用”两部分,具体内容见:https://baike.baidu.com/item/%E5%BA%94%E7%94%A8%E5%B1%82/16412033?fr=aladdin
\color{red}{1.2-2}

Ans:

\because 8n^2 \leq 64nlgn\therefore 2^n \leq n^8\therefore n = 1, 2, 3, .... (TBD)
\color{red}{1.2-3}

Ans:

\because 100n^2 \leq 2^n\therefore n_{min} = 20(approxiamtely)

思考题

TBD

*TBD = to be done

第二章

2.1 插入排序(insertion sort)

伪代码:

for j = 2 ... n:
  key = a[j]
  i = j-1
  while i > 0 and a[i] > key:
    a[i+1] = a[i]
    i = i-1
  a[i+1] = key

C++ 语言实现插入排序

#include <bits/stdc++.h>

using namespace std;

int a[105];

int main()
{
        int n; // length of array
        cin >> n;
        for (int i = 1; i <= n; i++) {
                cin >> a[i]; // input array
        }
        for (int i = 2; i <= n; i++) {
                int key = a[i]; // key := the element that should be sort now
                int j = i-1;
                while (j >= 1 && a[j] >= key) {
                        a[j+1] = a[j];
                        j--;
                }
                a[j+1] = key; // after this, elements from 1~i has been sort from smallest to biggest
        }
        for (int i = 1; i <= n; i++) {
                cout << a[i] << " "; // output the array to check if the process is right
        }
        cout << endl;
        return 0;
}

插入排序原理:
每次将前面k个元素排好序
对于处理前k+1个元素时,由于前面k个元素已经排好序了,因此可以直接将第k+1个元素不断与前面的元素进行比较,如果小的话就将该元素继续向前插入,如果大的话就停止操作,说明前k+1个元素已经从小到大排好序了

相关文章

  • 《算法导论》笔记(一)

    第一章 练习1.1 Ans: 给学生成绩进行排名需要用到排序;TBD Ans: 工作量;完成度;…… Ans: 栈...

  • 算法导论笔记

    1.1 简单介绍何为算法,它能解决什么样的问题,介绍NP完全问题。 1.2 比较算法复杂度 2.1 Insert ...

  • 算法导论笔记

    贪心算法 贪心算法:每一步在当时看起来是最佳的选择,总是做出局部最优的选择 贪心算法并不保证得到最优解,但对于很多...

  • 算法导论笔记

    读算法导论 记录一下读算法导论的过程 1.算法 如果问我什么是算法(思考中) 利用数据结构,考虑时间以及空间效率,...

  • 2018-11-07

    算法运用(读《智能科学技术导论》笔记) 学计算机玩的就是算法,算法之于程序员就如同菜谱之于厨师。人类通过编制算法,...

  • 算法导论----学习笔记

    渐进符号 1、Θ记号 Θ(g(n)) = { f(n) : 若存在正常数c1,c2和n0,使对所有n>=n0时有...

  • 《算法导论》笔记(二)

    循环不变式 1.初始化2.保持3.终止(与数学归纳法类似) 练习2.1 Ans: ① j = 2,{31,41,5...

  • 数据结构与算法参考书籍

    数据结构与算法分析 算法 算法导论 java编程思想

  • 好文章索引

    算法 《算法导论》快速指南:我是如何10天入门算法导论的。 - 渗透之美 - 知乎专栏 推荐内容索引 - 老赵点滴...

  • 算法导论贪心算法笔记

    贪心算法也是用来解决最优解问题 它在每一步都做出当时看起来最佳的选择,未必有动态规划严谨,但是在某些问题中,确实可...

网友评论

      本文标题:《算法导论》笔记(一)

      本文链接:https://www.haomeiwen.com/subject/lvijtrtx.html