ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

什么是数据结构

2022-09-08 22:32:38  阅读:168  来源: 互联网

标签:int double 什么 算法 数据结构 数据 复杂度


数据结构

数据结构是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最有效率算法。
利用代码解决实际问题,最重要的是解决问题的效率,主要是两个因素:

  • 空间的分配效率(物理存储结构)
  • 算法的巧妙程度(逻辑结构:一对一线性、一对多树性、多对多关系网)
    • 数据对象在计算机中的组织方式
    • 数据对象必定与一系列加在其上的操作相关联
      (完成这些操作所用的方法就是算法)

抽象数据类型

抽象数据类型的两个要素(数据对象集、数据集合相关联的操作集)

首先理解"抽象"的意义:

  • 描述数据类型的方法不依赖于具体实现,这种描述,与存放数据的机器无关,与存放数据的物理结构无关,与实现操作的算法和编程语言无关。只描述数据对象集和相关操作集"是什么",并不涉及如何实现的问题。
  • 好的描述,就是提高函数、算法的包容性,尽可能让多的种类的数据类型参与计算。

算法

什么是算法?

  • 一个有限的指令集
  • 接受一些输入(亦可无)
  • 产生输出结果
  • 一定在有限的步骤后停止
  • 每一条指令必须有明确的的目标,在计算机的处理范围之内,“描述”时,不依赖于任何一种计算机语言以及实现手段。

什么是好的算法?(两个指标)

  • 空间复杂度S(n)——根据算法写成的程序在执行时占用存储空间的长度。
  • 时间复杂度T(n)——根据算法写成的程序在执行时消耗时间的长度。
    (两者都与数据规模有关)
    一、空间复杂度
void PrintN(int N){………………//这个是函数,下面是它的功能
    if(N){………………………………………//若N不为0,则就执行
        PrintN(N-1);……………//此行的意义就是调用自己,即再进行判断,再执行功能
        printf("%d\n",N);//此行执行无关上一行
    }
}

如果说N = 1000000000000,则就出现系统报错,原因是,函数在每一次调用时都是需要申领空间的,数据规模太大就导致内存爆满。当然存在不需要申领空间的方式实现该目的,所以这也是我们需要注意的地方。
二、时间复杂度

代码一:
  double f(int n,double a[],double x){
     int i;
     double p = a[0];
         for(i = n; i > 0; i++);{
             p += (a[i]*pow(x,i));
         }
     return p;
   }

代码二:
   double f(int n, double a[], double x){
       int i;
       double p = a[n];
       for(i = n; i>0; i--){
           p = a[i - 1] + x*p;
       }
   return p;
   }

若果说n为10000000000,代码一的用时必定比代码二的用时多,原因是前者的乘法运算量远远大于后者,并且乘除法用时是要多于加减法的。程序运行的总用时,是各个环节时间的累积

标签:int,double,什么,算法,数据结构,数据,复杂度
来源: https://www.cnblogs.com/hezhipeng/p/16671051.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有