C++11 数据结构0 什么是 “数据结构“?数据,数据对象,数据元素,数据项 概念。算法的基本概念 和 算法的度量,大O表示法,空间换时间的代码

本文主要是介绍C++11 数据结构0 什么是 “数据结构“?数据,数据对象,数据元素,数据项 概念。算法的基本概念 和 算法的度量,大O表示法,空间换时间的代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据:

  • 是能输入计算机且能被计算机处理的各种符号的集合。
  • 数值型的数据:整数和实数。
  • 非数值型的数据:文字、图像、图形、声音等。

数据对象:

        性质相同的 "数据元素" 的集合

        例如一个 int arr[10],  Teacher tea[3];

数据元素: 

        tea[0],tea[1],arr[2],这些都是

数据项:

        数据元素中的每一项。

数据结构就是研究 数据元素之间关系的,注意这门课研究的位置和方向。

算法的概念:

特定问题的求解步骤的描述。

算法复杂度:大O法表示

用空间来换取时间的一个例子:

//有一个数组,统计这个数组中的数组都是由1-999 组成的,统计这个数组中那个 数字出现的最多,并打印出现的次数

#include <iostream>
using namespace std;void search(int *array, int len) {int sp[1000] = { 0 }; //都清空成0int i = 0; int max = 0;for (i = 0; i < len;++i) {//遍历数组。将数组的值做为sp数组的下标,每出现一次,则+1int index = array[i] - 1;sp[index] ++;//也就是说,如果碰到array[100] = 11,则将sp[10]的值++,}//找出出现最多的次数,赋值给maxfor (i = 0; i < 1000;++i) {if (max<sp[i]) {max = sp[i];}}//找到了出现最多的次数,还要根据这个次数找到array的值。这里要好好的理解一下for (i = 0; i < 1000;++i) {if (max == sp[i]) {cout << "出现最多的是" << i+1 <<" 出现的次数是 :" << max << endl;}}
}int main()
{std::cout << "Hello World!\n";//有一个数组,统计这个数组中的数组都是由1-999 组成的,统计这个数组中那个 数字出现的最多,并打印出现的次数int array[] = { 178,2,33,4,5,6,4,3,2,1,23,6,6,6,3,45,46,45,6,6,6,6,6,6,6,6,999 };cout << "sizeof(array)" << sizeof(array)<< endl;cout << "sizeof(*array)" << sizeof(*array) << endl;cout << "*array = " << *array << endl;search(array,sizeof(array)/sizeof(*array));
}

数据结构:

数据结构就是研究 数据元素之间关系的,注意这门课研究的位置和方向。

那么具体要学些啥呢?

1.一般线性表的顺序实现,实际上就是数组

2.一般线性表的链式存储 --单链表

3.一般线性表的链式存储 --双链表

4.一般线性表的链式存储 --循环链表

5.栈的顺序存储

6.栈的链式存储

7.队列的顺序存储

8.队列的链式存储

9.然后再研究树。树的知识点是以学好前面的知识为基础的,因此要先学好前面的线性表 相关的。然后再学习树

        

这篇关于C++11 数据结构0 什么是 “数据结构“?数据,数据对象,数据元素,数据项 概念。算法的基本概念 和 算法的度量,大O表示法,空间换时间的代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/892229

相关文章

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查