博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构(一)
阅读量:5341 次
发布时间:2019-06-15

本文共 1049 字,大约阅读时间需要 3 分钟。

一、程序 = 数据结构 + 算法

  1. 数据结构
    1-1:逻辑结构
    集合结构、线性结构、树形结构、图形结构
    1-2:物理结构(存储结构)
    顺序存储、链式存储
  2. 算法
    2-1:算法特点
    有穷性(通过有限次计算可以结束该程序)、确定性、可行性、输入、输出(至少一个输出)。
    2-2:算法设计要求
    正确性、可读性、健壮性、效率高与低存储量需求(例如女朋友干活勤快但是吃得少)
  3. 时间复杂度
    高效率是指算法执行的时间短耗费的资源少。指程序运行的次数
    常用时间复杂度:
    (1)常数阶:O(1)
    (2)对数阶:O(log2 n)
    (3)线性阶:O(n)
    (4)线性对数阶:O(n log2 n)
    (5)平方阶:O(n^2^)
    (6)立方阶:O(n^3^)
    (7)k次方阶:O(n^k^)
    (8)指数阶:O(2^n^)
    n越大,时间复杂度越大。
  4. 空间复杂度

    程序运行所消耗的存储空间

    时间复杂度攻略:
  5. 用常数1取代运行时间中的所有的加法常数。
  6. 在修改后的运行次数函数中,取最高阶项。
  7. 如果最高项存在且不是1,则去除与这个项相乘的常数。(2*n^3+1======>时间复杂度T(n) = O(n^3))
  8. 得到的结果就是最大O阶。

    举个栗子
  9. 常数阶:
int sum = 0,n = 100;printf("hello,");printf("I am Jakarta,");printf("today,we will study ");printf("data structure");sum = n/2;

这里输出的4句话与n无关,不管n是多少,输出都是四句话。根据攻略1得知:这里的时间复杂度T(n) = O(1);为常数阶。

  1. 线性阶
int i,n=100,sum = 0;for(i=0;i

算法执行次数与n有关,所以这里T(n) = O(n);

  1. 平方阶
int i,j,n = 100;for(i=0;i

这里双层循环,所以T(n) = O(n^2^); k层循环同理(n^k^)。

int i,j,n = 100;for(i=0;i

这里内层循环发生变化,具体解决方案如下:

平方阶

时间复杂度从小到大排序:

O(1) < O(logn) < O(n) < O(nlogn) < O(n^2^) < O(n^3^) < O(2^n^) < O(n!) < O(n^n^)

本文参考小甲鱼老师的数据结构教程:

转载于:https://www.cnblogs.com/linchengxinsx/p/9313704.html

你可能感兴趣的文章
用css3和javascript做的一个简单的计算器
查看>>
[转]TFS常用的命令行详解
查看>>
[转]AI+RPA 融合更智能
查看>>
Javascript拖拽&拖放系列文章1之offsetParent属性
查看>>
OWIN的理解和实践(二) – Host和Server的开发
查看>>
VS DLL 复制本地
查看>>
异常处理原则
查看>>
scrapy框架之递归解析和post请求
查看>>
Java 之泛型通配符 ? extends T 与 ? super T 解惑
查看>>
关于小程序后台post不到数据的问题
查看>>
mysql left join,right join,inner join用法分析
查看>>
Oracle scott解锁 以及连接数据库
查看>>
浅谈C语言中的联合体
查看>>
【2017-05-03】winform打印控件、事件对象和事件数据、MDI窗体容器
查看>>
照着书写的几个经典排序算法(插入、希尔、堆、归并、快排)
查看>>
[Swift]LeetCode753. 破解保险箱 | Cracking the Safe
查看>>
2017-2018-1 20155330《信息安全技术》实验二——Windows口令破解
查看>>
20155210 实验一 逆向与Bof基础
查看>>
20个有用的正则表达式
查看>>
PTA 02-线性结构3 Reversing Linked List (25分)
查看>>