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

相关文章

Mysql数据库中数据的操作CRUD详解

《Mysql数据库中数据的操作CRUD详解》:本文主要介绍Mysql数据库中数据的操作(CRUD),详细描述对Mysql数据库中数据的操作(CRUD),包括插入、修改、删除数据,还有查询数据,包括... 目录一、插入数据(insert)1.插入数据的语法2.注意事项二、修改数据(update)1.语法2.有

Python日期和时间完全指南与实战

《Python日期和时间完全指南与实战》在软件开发领域,‌日期时间处理‌是贯穿系统设计全生命周期的重要基础能力,本文将深入解析Python日期时间的‌七大核心模块‌,通过‌企业级代码案例‌揭示最佳实践... 目录一、背景与核心价值二、核心模块详解与实战2.1 datetime模块四剑客2.2 时区处理黄金法

Java进行日期解析与格式化的实现代码

《Java进行日期解析与格式化的实现代码》使用Java搭配ApacheCommonsLang3和Natty库,可以实现灵活高效的日期解析与格式化,本文将通过相关示例为大家讲讲具体的实践操作,需要的可以... 目录一、背景二、依赖介绍1. Apache Commons Lang32. Natty三、核心实现代

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

SpringBoot实现接口数据加解密的三种实战方案

《SpringBoot实现接口数据加解密的三种实战方案》在金融支付、用户隐私信息传输等场景中,接口数据若以明文传输,极易被中间人攻击窃取,SpringBoot提供了多种优雅的加解密实现方案,本文将从原... 目录一、为什么需要接口数据加解密?二、核心加解密算法选择1. 对称加密(AES)2. 非对称加密(R

详解如何在SpringBoot控制器中处理用户数据

《详解如何在SpringBoot控制器中处理用户数据》在SpringBoot应用开发中,控制器(Controller)扮演着至关重要的角色,它负责接收用户请求、处理数据并返回响应,本文将深入浅出地讲解... 目录一、获取请求参数1.1 获取查询参数1.2 获取路径参数二、处理表单提交2.1 处理表单数据三、

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

macOS Sequoia 15.5 发布: 改进邮件和屏幕使用时间功能

《macOSSequoia15.5发布:改进邮件和屏幕使用时间功能》经过常规Beta测试后,新的macOSSequoia15.5现已公开发布,但重要的新功能将被保留到WWDC和... MACOS Sequoia 15.5 正式发布!本次更新为 Mac 用户带来了一系列功能强化、错误修复和安全性提升,进一步增

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五

Pandas进行周期与时间戳转换的方法

《Pandas进行周期与时间戳转换的方法》本教程将深入讲解如何在pandas中使用to_period()和to_timestamp()方法,完成时间戳与周期之间的转换,并结合实际应用场景展示这些方法的... 目录to_period() 时间戳转周期基本操作应用示例to_timestamp() 周期转时间戳基