数据结构【一】(学前简单介绍)

本篇简要介绍

本文介绍一些数据结构基本知识。
简单介绍数据结构入门。

数据结构在程序中的作用

众所周知,数据结构是计算机专业很重要的一门课程,

现实世界的问题通过数据抽象、方法抽象为数据模型、算法。

算法 + 数据结构 = 程序 是最直观的解释。

理解掌握基本数据结构和经典算法(复用、修改、重组、创新);培养算法设计与分析能力(设计、评价、改进)、计算思维能力(模型化、形式化、逻辑思维、抽象思维);解决问题。

现学数据结构研究内容(非数值问题)

*数据的逻辑结构、面向问题、组织关系

*存储结构

*算法、有效处理、查/删/找

*常用处理技术:查找、排序

数据模型

计算机能求解的问题一般分为数值问题和非数值问题;

数值问题抽象出的数据模型通常是数学方程;

数值问题抽象出的数据模型通常是表、树、图等数据结构。

<百元买百鸡>

可列两个三元一次方程组成方程组加上范围限制求解

<学籍管理>

学籍管理有学生姓名、性别、出生日期等列项目;

也有个人的行项目–表项,

各表项之间的关系可以用线性结构表示

抽象:⭕——⭕——⭕——⭕——⭕……⭕——⭕——⭕

<人机对弈>

计算机的操作对象是此过程中的棋盘状态,各个棋子位置;

一个格局可派生多个格局,

可用树结构表示

<七巧板涂色>

此过程中相邻位置均有影响,可将每个区域看成一个顶点,

若相邻,看为有边相连,

因此可看为图结构

集合/线性表、树、图

数据结构的问题千千万,也是这几种或其组合、变形,首先认识他们的基本形态,逐一层近。

程序设计知识

程序设计需要知识:

  • 编程基础——编程语言的基本语法

数据表示:常量变量、数组、结构体、指针
(现实世界)问题-抽象 --> (模型化)数据模型-表示 --> (语言层)变量常量数据类型-翻译 --> 内存,01编码(机器层)
数据处理:表达式、语句、三种基本程序结构
(现实世界)问题-抽象 --> (形式化)算法-表示–> (语言层)程序-翻译 --> 机器指令(机器层)
数据传递:自定义函数/类定义

  • 数学知识——离散数学,集合、关系、递推、级数求和、数学归纳法、图(基本概念);概率论基础,随机分布、概率分布、数学期望

多看文章、理解、模仿应用场景、练习实践

算法实例

数组循环左移问题:将一个具有n个元素的数组向左循环移动i个位置

解法额外存储单元
解法1:先将数组中的前 i 个元素存放在一个临时数组中,再将余下的 n 一 i 个元素左移 i 个位置,最后将前 i 个元素从临时数组复制回原数组中后面的 i 个位置总共需要移动 i + ( n - i ) + i = i + n 次数组元素
在这里插入图片描述i
解法2:先设计一个函数将数组向左循环移动1个位置,然后再调用该算法 i 次,总共需要移动以 n 次数组元素。
在这里插入图片描述1
解法3:现在我们换一个角度看这个问题,将这个问题看作是把数组 AB 转换成是组 BA(A 代表数组的前 i 个元素, B 代表数组中余下的 n 一 i 个元素),先将 A 置逆 ,再将 B 置逆 ,最后将整个置逆得到BA 。需要交换 i / 2 +(n - i)/ 2 + n / 2 = n次数组元素
在这里插入图片描述1
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值