《数据结构》系列笔记之1.1 什么是数据结构

本文介绍了数据结构的概念,强调了数据的组织方式对于解决问题效率的重要性。通过实例展示了不同数据结构和算法在查找、打印数字及计算多项式值时的效率差异。数据结构包括逻辑结构和物理存储结构,而抽象数据类型则关注数据对象集及其相关操作集,不涉及具体实现细节。了解数据结构和算法有助于优化程序性能。
摘要由CSDN通过智能技术生成

✅作者简介:大家好我是五维星空,目前是某国企的一名Java全栈程序员,热爱技术、喜欢代码,希望我的文章能给大家带来收获。

✅个人主页:五维星空的csdn博客

✅系列专栏:数据结构

✅如果觉得博主的文章还不错的话,请三连支持一下博主哦✅

本书笔记部分内容来源于中国大学MOOC:https://www.icourse163.org/course/ZJU-93001?tid=1466830443

1.基本概念

1.1 什么是数据结构

​ 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法索引技术有关。【摘选自百度百科

例1:

书架上有一万本书,如果我们随便放,则会导致查找耗时久。较好的办法是按照科目或者书名首字母分类存放,以减少查找时间。

解决问题方法的效率, 跟数据的组织方式有关

例2:

写程序实现一个函数PrintN,使得 传入一个正整数为N的参数后,能顺序 打印从1到N的全部正整数

//效率高
void PrintN ( int N )
{ 
    int i;
    for ( i=1; i<=N; i++ ){
    	printf(%d\n”, i );
    }
    return;
} 

//递归效率低,N过大会死机。
void PrintN ( int N )
{
    if ( N ){
        PrintN( N – 1 );
        printf(%d\n”, N );
    }
	return;
} 

解决问题方法的效率, 跟空间的利用效率有关

例3:

写程序计算给定多项式在给定点x处的值image-20220425230550788

//计算机做加法比乘除法快,乘法其实也是转换为加法做的。
//此算法乘法次数多,效率低
double f( int n, double a[], double x )
{ 
    int i;
    double p = a[0];
    for ( i=1; i<=n; i++ )
    	p += (a[i] * pow(x, i));
    return p;
}

上面的多项式可以转换成如下形式

image-20220425233019786

//乘法次数少,效率高
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;
}

解决问题方法的效率,跟算法的巧妙程度有关

数据对象在计算机中的组织方式

  • 逻辑结构
  • 物理存储结构

数据对象必定与一系列加在其上的操作相关联

完成这些操作所用的方法就是算法

抽象数据类型

  • 数据对象集
  • 数据集合相关联的操作集

抽象:描述数据类型的方法不依赖于具体实现

  • 与存放数据的机器无关
  • 与数据存储的物理结构无关
  • 与实现操作的算法和编程语言均无关

只描述数据对象集和相关操作集“是什么”,并不涉及“如何做到”的问题。

例4:“矩阵”的抽象数据类型定义

image-20220425233905585

下一小节我们来了解一下《什么是算法》,敬请期待~

五维星空 - 分享前后端技术!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值