算法数据结构01 /算法数据结构概述

目录

  • 算法数据结构01 /算法数据结构概述

    • 1. 算法
    • 2. 评判程序优劣的方法
    • 3. 时间复杂度
    • 4. 数据结构
    • 5. python数据结构性能分析
    • 6. 总结

算法数据结构01 /算法数据结构概述

1. 算法

  • 算法概述

    算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务。一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用。

    算法是独立存在的一种解决问题的方法和思想。

    对于算法而言,实现的语言并不重要,重要的是思想。

  • 算法的五大特性
    1. 输入: 算法具有0个或多个输入
    2. 输出: 算法至少有1个或多个输出
    3. 有穷性: 算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步骤可以在可接受的时间内完成
    4. 确定性:算法中的每一步都有确定的含义,不会出现二义性
    5. 可行性:算法的每一步都是可行的,也就是说每一步都能够执行有限的次数完成

2. 评判程序优劣的方法

  • 消耗计算机资源和执行效率(无法直观)
  • 计算算法执行的耗时(不推荐,因为会受机器和执行环境的影响)
  • 时间复杂度(推荐)

3. 时间复杂度

  • 评判规则:量化算法执行的操作/执行步骤的数量
  • 表现形式:大O记法
    • 最重要的项:时间复杂度表达式中最有意义的项
    • O(最重要的项):O(n),O(n**2)
  • 常见的时间复杂度:
    O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n)  < O(n!) < O(n^n)

    代码示例:计算下列算法的时间复杂度

    a=5
    b=6
    c=10
    for i in range(n):
       for j in range(n):
          x = i * i
          y = j * j
          z = i * j
    for k in range(n):
       w = a*k + 45
       v = b*b
    d = 33
    
    # 时间复杂度:4+3n**2+2n==>n**2

4. 数据结构

  • 概念:对于数据(基本类型的数据(int,float,char))的组织方式就被称作为数据结构。数据结构解决的就是一组数据如何进行保存,保存形式是怎样的。

5. python数据结构性能分析

  • timeit模块:该模块可以用来测试一段python代码的执行速度/时长。
  • Timer类:该类是timeit模块中专门用于测量python代码的执行速度/时长的。原型为:class timeit.Timer(stmt=‘pass‘,setup=‘pass‘)。
    • stmt参数:表示即将进行测试的代码块语句。
    • setup:运行代码块语句时所需要的设置。
    • timeit函数:timeit.Timer.timeit(number=100000),该函数返回代码块语句执行number次的平均耗时。
  • 代码示例:
    import timeit
    def test01():
        alist = []
        for i in range(1,1001):
            alist += [i]
        return alist
    def test02():
        alist = []
        for i in range(1,1001):
            alist.append(i)
        return alist
    def test03():
        alist = list(range(1,1001))
        return alist
    def test04():
        alist = [i for i in range(1,1001)]
        return alist
    if __name__ == '__main__':
        #stmt:待执行的代码块
        #setup:
        timer = timeit.Timer(stmt='test01()',setup='from __main__ import test01')
        print(timer.timeit(5000))
    
        timer1 = timeit.Timer(stmt='test02()',setup='from __main__ import test02')
        print(timer1.timeit(5000))
    
        timer2 = timeit.Timer(stmt='test03()',setup='from __main__ import test03')
        print(timer2.timeit(5000))
    
        timer3 = timeit.Timer(stmt='test04()',setup='from __main__ import test04')
        print(timer3.timeit(5000))
    
    """
    0.41899349999999913
    0.4362713999999954
    0.0754374999999925
    0.2028786999999994
    """  

6. 总结

  • 使用不同的形式组织数据,在基于查询时的时间复杂度是不一样的。因此认为算法是为了解决实际问题而设计的,数据结构是算法需要处理问题的载体。

原文地址:https://www.cnblogs.com/liubing8/p/12059415.html

时间: 2024-10-13 09:49:37

算法数据结构01 /算法数据结构概述的相关文章

数据结构和算法学习总结01 绪论

数据结构实际上是数据元素之间的关系的集合 数据结构分为    1.逻辑结构      2.物理结构(逻辑结构的数据元素的存储方式)                            逻辑结构分为  1.集合结构   数据元素无关系,只是属于一个集合                            2.线性结构   数据元素间1对1的关系                            3.树形结构   数据元素间1对多的关系                            

数据结构与算法:概述+思维导图

还记得这个经典公式吗? 程序=数据结构+算法     可见数据结构和算法对于程序的重要性.基于此博主写了数据结构与算法系列随笔.下面先给出数据结构与算法的思维导图. 一.数据结构的基本概念 数据结构定义: 数据结构是一种存储和组织数据的方式,以便于访问和修改.数据结构包括数据的逻辑结构.数据的存储结构以及数据的运算,即按照某种逻辑关系组织起来的一批数据,按一定的映射方式把它存放在计算机的存储器中,并在这些数据上定义了一个运算的集合. 数据的逻辑结构:反映数据元素之间的关系.有集合.线性结构.树型

数据结构和算法概述

1 数据结构和算法的概念 数据结构:对计算机内存中的数据的一种安排. 算法:对数据结构中的数据进行各种处理. 2 数据结构和算法的应用方面 ①现实世界的数据存储 ②程序员的工具 ③现实世界的建模 3 常用的数据结构以及优缺点 数组 优点:插入快(知道下标).查找快(根据索引查找) 缺点:查找慢(根据内容查找),删除慢,数组的长度是固定的 有序数组 优点:比无序的数组查找块 缺点:删除和插入慢,数组的长度是固定的 栈 优点:提供后进先出的存取方式 缺点:存取其他项很慢 队列 优点:提供先进先出的存

数据结构和算法之概述

1 什么是数据结构和算法? 1.1 数据结构 对内存或磁盘上的数据的一种安排,也就是数据的组织形式.基本的数据结构包括数组.链表.栈.队列.树.哈希表.图.堆等等. 1.2 算法 是对数据结构中的数据进行处理的方式或是过程,广义上讲,就是解决问题的方法. 2 数据结构和算法的关系 数据结构是为算法服务的,很多算法都依赖于特定的数据结构,但是不是全部算法,算法当然可以和数据结构没有关系. 3 学习数据结构和算法有什么好处? 正确的选择数据结构和算法,可以使得程序更加健壮,运行效率大大提高,因此,数

数据结构与算法基础之概述、指针与内存

数据结构的定义 我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序而执行的相应操作,这个操作也叫算法) 数据结构 = 个体 + 个体的关系 算法 = 对存储数据的操作 衡量算法的标准: 时间复杂度:大概程序要执行的次数,而非执行的时间 空间复杂度:算法执行过程中大概所占用的最大内存 难易程度 健壮性 内存的基本概念: 1.内存是用来存储数据的设备.它的存储速度介于寄存器和硬盘之

数据结构与算法系列十(排序算法概述)

1.引子 1.1.为什么要学习数据结构与算法? 有人说,数据结构与算法,计算机网络,与操作系统都一样,脱离日常开发,除了面试这辈子可能都用不到呀! 有人说,我是做业务开发的,只要熟练API,熟练框架,熟练各种中间件,写的代码不也能“飞”起来吗? 于是问题来了:为什么还要学习数据结构与算法呢? #理由一: 面试的时候,千万不要被数据结构与算法拖了后腿 #理由二: 你真的愿意做一辈子CRUD Boy吗 #理由三: 不想写出开源框架,中间件的工程师,不是好厨子 1.2.如何系统化学习数据结构与算法?

Java数据结构和算法(一):综述

数据结构和算法能起到什么作用? 数据结构是指数据在计算机内存空间或磁盘中的组织形式.数据结构包括数组.链表.栈.二叉树.哈希表等等.算法对这些结构中的数据进行各种处理,例如,查找一条特殊的数据项或对数据进行排序. 数据结构的概述 数据结构 优点 缺点 数组 插入快,如果知道下标,可以非常快地存取 查找慢,删除慢,大小固定 有序数组 比无序数组查找快 删除和插入慢,大小固定 栈 提供后进先出方式的存取 存取其他项很慢 队列 提供先进先出方式的存取 存取其他项很慢 链表 插入快,删除快 查找慢 二叉

数据结构与算法1

数据结构与算法(一),概述 转载请注明出处:http://www.cnblogs.com/wangyingli/p/5919297.html 数据结构学了有一年的时间了,但是一直没有好好的总结一下,现在回想起来,感觉好像都不怎么记得了.所以接下来一段时间我将重新学习一下,算是温故而知新了.本着「分享是一种美德」的精神,我将把我的学习总结记录下来,并与大家分享. 本节的主要内容有: 一.数据结构 1.定义 2.关于数据结构的几个术语 3.逻辑结构与物理结构 二.抽象数据类型 三.算法 四.算法的复

计算机软考笔记之《数据结构与算法》

1.线性结构 (1)线性表 ①线性表的定义 ②线性表的存储结构 ③线性表的应用 (2)栈和队列 ①栈 ②队列 (3)串 ①串的定义及基本运算 ②串的存储结构 2.数组和矩阵 (1)数组 (2)矩阵 3.树和图 (1)树 ①树的定义 ②二叉树的定义和基本运算 ③二叉树的性质 ④二叉树的存储结构 ⑤二叉树的遍历 ⑥最优二叉树 ⑦二叉查找树 (2)图 ①图的定义及术语 ②图的存储结构 4.常用算法 (1)算法概述 ①算法的基本概念 ②算法与数据结构 ③算法的描述 ④算法效率 (2)排序算法 ①排序的基