【数据结构学习笔记】1 第一章 绪论(上)

【数据结构与算法】学习笔记——第一章 绪论1 ✔前言: 👻这门课程是讲什么? 一、数据结构的基本概念 二、线性表 三、栈和队列 四、串 五、数组和广义表 六、图 七、查找技术 八、排序技术 👻怎样才能学好这门课? 勤于思考、多做练习、多上机 不放弃!!! 1.1数据结构的研究内容 首先,分析问题、提取操作对象,然后找出操作对象之间的关系,用数学语言加以描述,建立相应的数学方程。 eg1:学生信息表 线性表 操作对象:每位学生的信息(学号、姓名、性别、籍贯、... 阅读详情


a 计算

01-a-1 计算


在计算机科学中,计算机是一种手段,而 计算 才是这门学科的本质。


01-a-2 绳索计算机


在这里插入图片描述
计算机是什么?
这12节等长的绳索,就是计算机。

计算是什么?
用这个工具可机械地、重复地完成的结果一样的过程。


01-a-3 尺规计算机


在这里插入图片描述
计算机是什么?
理想的直尺和理想的圆规。

计算是什么?
作图的过程和方法。

思考:它能解决什么问题?不能解决什么问题?

起泡排序

在这里插入图片描述
自己的练习程序:

#include <iostream>
using namespace std;
int N[10] = {0, 10, 3, 3, 20, 100, 2, 1, 0, 11}; 
int mybubblesort(int *array, int length)
{    
	int result = 0;    
	int temp   = 0;
	if(length != 0)    
	{        
		for(int j = 1; j < length; j++)        
		{            
			for(int i = 0; i < (length - 1); i++)            
			{                
				if(array[i] > array[i + 1])                
				{                    
					temp         = array[i + 1];                    
					array[i + 1] = array[i];                    
					array[i]     = temp;                 
				}                    
			}        
		}    
	}    
	else    
	{        
		result = 1;    
	}
    	
    	for(int i = 0; i < length; i++)    
    	{        
    		N[i] = array[i];    
    	}        
	
	return result;
}
int main(void)
{    
	cout << "Input:";    
	for(int i = 0; i < 10; i++)    
	{        
		cout << N[i] << " ";    
	}    
	cout << endl;
    
    	mybubblesort(N, 10);
    
    	cout << "Output:";    
    	for(int k = 0; k < 10; k++)    
    	{        
    		cout << N[k] << " ";    
    	}    
    	cout << endl;
    
    	return 0;
}

输出:

Input:0 10 3 3 20 100 2 1 0 11
Output:0 0 1 2 3 3 10 11 20 100


示例程序:代码1.1 整数数组的起泡排序

#include <iostream>
#include <stdio.h>
using namespace std;
int N[10] = {0, 10, 3, 3, 20, 100, 2, 1, 0, 11}; 
void print ( int A[], int n, int lo, int hi ) 
{ //输出整数数组区间A[lo, hi)   
	bool sorted = true;   
	for ( int i = 1; i < n; i++ ) 
	if ( A[i-1] > A[i] ) sorted = false;   
	printf ( sorted ? "S: " : " : " );   
	for ( int i = 0; i < lo; i++ ) printf ( "   ." );   
	for ( int i = lo; i < hi; i++ ) printf ( "%4d", A[i] );   
	for ( int i = hi; i < n; i++ ) printf ( "   ." );   
	printf ( "\n" );
}
void bubblesort ( int A[], int n ) 
{ //起泡排序算法(版本1A):0 <= n   
	/*DSA*/int cmp = 0, swp = 0;   
	bool sorted = false; //整体排序标志,首先假定尚未排序   
	int tmp = 0;   
	while ( !sorted )    
	{ //在尚未确认已全局排序之前,逐趟进行扫描交换      
		sorted = true; //假定已经排序      
		for ( int i = 1; i < n; i++ )       
		{ //自左向右逐对检查当前范围A[0, n)内的各相邻元素         
			if ( A[i - 1] > A[i] )          
			{ //一旦A[i - 1]与A[i]逆序,则            
				//swap ( A[i - 1], A[i] ); //交换之,并            
				tmp  = A[i];            
				A[i] = A[i - 1];            
				A[i - 1] = tmp;
            			sorted = false; //因整体排序不能保证,需要清除排序标志            
            			/*DSA*/swp++; 
            			printf ( "%3d: ", n ); 
            			print ( A, n, i - 1, i + 1 );         
            		}         
            		/*DSA*/cmp++;      
            	}      
            	n--; //至此末元素必然就位,故可以缩短待排序序列的有效长度   
        }   
        /*DSA*/printf ( "#comparison = %d, #swap = %d\n", cmp, swp );
} //借助布尔型标志位sorted,可及时提前退出,而不致总是蛮力地做n - 1趟扫描交换
int main(void)
{    
	cout << "Input:";    
	for(int i = 0; i < 10; i++)    
	{        
		cout << N[i] << " ";    
	}    
	cout << endl;
    	bubblesort(N, 10);
    	cout << "Output:";    
    	for(int k = 0; k < 10; k++)    
    	{        
    		cout << N[k] << " ";    
    	}    
    	cout << endl;
    
    	return 0;
}

输出:

Input:0 10 3 3 20 100 2 1 0 11
10: : . 3 10 . . . . . . .
10: : . . 3 10 . . . . . .
10: : . . . . . 2 100 . . .
10: : . . . . . . 1 100 . .
10: : . . . . . . . 0 100 .
10: : . . . . . . . . 11 100
9: : . . . . 2 20 . . .
9: : . . . . . 1 20 . .
9: : . . . . . . 0 20 .
9: : . . . . . . . 11 20
8: : . . . 2 10 . . .
8: : . . . . 1 10 . .
8: : . . . . . 0 10 .
7: : . . 2 3 . . .
7: : . . . 1 3 . .
7: : . . . . 0 3 .
6: : . 2 3 . . .
6: : . . 1 3 . .
6: : . . . 0 3 .
5: : . 1 2 . .
5: : . . 0 2 .
4: S: . 0 1 .
#comparison = 44, #swap = 22
Output:0 0 1 2 3 3 10 11 20 100


01-a-4 算法


在这里插入图片描述


01-a-5 有穷性


事实:程序 ≠ 算法
算法:如何设计、优化?
优劣:如何评判、比较?


01-a-6 好算法


在这里插入图片描述


站在巨人的肩上
【1】清华大学 邓俊辉《数据结构(C++语言版)》
【2】清华大学 邓俊辉《数据结构习题解析》

数据结构第一章绪论 这一章的主要内容在于了解数据结构的基本概念:包括基本概念和术语、数据结构的类型;学习算法的基本概念:包括算法的概念、评价一个算法优劣的标准、算法的时间复杂度和空间复杂度。 阅读详情

相关推荐

数据结构题集(严蔚敏版)题目——第一章 绪论

今天数据结构课程开课了,早就听说这门课的重要性,于是决定将

CocoaChen 3895

数据结构绪论(1)

之后写的一些数据结构的内容和感想是基于清华大学的数据结构(C++语言版   第3版)以及对应的网课,后续会在PTA上面刷浙大的数据结构题目集,会挑一部分有趣的题目贴过来,记一下解题思路。希望能好好学好数据结构,加油咯! 目录 第一章      绪论(1) 1.1计算机与算法 1.绳索计算机 2.尺规计算机 3.冒泡排序(起泡排序) 4.算法 : 5.什么是好算法 : 第一章   ...

qq_41074004的博客 1307

算法与数据结构复习题 第一章 绪论

文章目录第一章 绪论书面作业一、判断题二、单选题三、程序填空 第一章 绪论 书面作业 一、判断题 1、数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的存储结构。 (F) 解析: 逻辑结构可用不同的存储结构实现,“它依赖于计算机的存储结构”完全说不通。 2、算法和程序没有区别,在数据结构中二者是通用的。 (F) 解析: 算法与程序有区别,算法是解决问题的方法或步骤,而程序是用编程语言描述算...

好学者的博客 1万+

绳索数据结构(字符串快速拼接)

原文地址:Ropes Data Structure (Fast String Concatenation)字符串连接是一种十分常见的操作。当字符串以传统的方式(例如字符数组)存储的时候,连接操作需要花费O(n)O(n)的时间(在这里n是元字符串的长度)。我们可以利用绳索数据结构减少拼接花费的时间。绳索数据结构绳索是一个二叉树,这个二叉树的节点包含除叶子节点以外,节点左边字符的个数。叶子节点包含的是字

K.Sun 4042

数据结构——第一章:绪论

学习目标: 了解并理解数据,数据元素,数据结构,逻辑结构,存储结构,算法及算法设计-分析-时间复杂度等知识点。 1、绪论 一、数据结构的概念及其内容 数据结构是带有结构的数据元素的集合,其中的结构是指数据元素之间的相互关系,即数据的组织形式。 数据(data):描述客观事物的数,字符以及能输入计算机中并被计算机处理的符号的集合。如:整数,实数,字符串,当...

Ajun的IT博客 3214

408《数据结构》——第一章:绪论

信息的载体,能被计算机识别、存储和处理的符号集合(数值、字符、图形、图像、声音等)。数据的基本单位,通常作为一个整体进行考虑和处理(例如:一条学生记录、一个棋盘格子)。在数据结构中通常被当作一个结点或记录。构成数据元素的不可分割的最小单位(例如:学生记录中的学号、姓名、成绩)。具有相同性质的数据元素的集合(例如:所有学生记录的集合、所有整数的集合)。是数据的子集。相互之间存在一种或多种特定关系的数据元素的集合。它包含以下三方面的内容:数据元素之间的逻辑关系,与数据的存储无关,独立于计算机。

jiaomongjun的博客 971

邓俊辉数据结构学习心得系列——认识计算的本质

计算机和计算的关系 计算机只是一种计算的工具,仅此而已。反过来说,只要是能够完成计算的工具,都是计算机,而不仅仅局限于电脑! 视频中用两个例子来说明这个问题: 绳索计算机 给出一条直线以及任意线上的一个点A,如何过点A做一条垂直于直线的垂线? 4000多年前的埃及人解决这个问题的方法如下: 通过拉直一根等分成12段的绳子(3+4+5),使用勾股定理(我们现在的叫法,那个时候应该不知道)来解决这...

Henry7777的博客 309

【数据结构】第一章绪论习题加答案

一、选择题 1、从逻辑上可以吧数据结构分成(D) A、内部结构和外部结构 B、动态结构和静态结构 C、紧凑结构和非紧凑结构 D、线性结构和非线性结构 2、下面的程序的时间复杂度是(B) x=0; y=1; for(i=1;i<=n;i++){ ++x; y=y*i; } A、O(1) B、O(n) C、O(2+2n) D、O(1+n) 3、下面程序段的时间复杂度是(B) for( i =0; i<n; i++) ​ for...

m0_56287454的博客 2455

计算机第一章绪论笔记,数据结构学习笔记——第一章:绪论(上)

一、目标:计算整个计算机科学的目的,都是为了实现高效和低耗的计算。为了理解什么是计算,我们首先来看几个实例。Fig. 1 实例:绳索计算Fig. 2 实例:尺规计算机1.1 定义算法计算,就是借助某种工具,遵照一定规则,以明确而机械的形式进行。计算模型(计算机)就是计算中使用的工具。算法,即在特定计算模型下,旨在解决特定问题的指令序列。特点:①输入、输出明确②正确性(可解决问题)③确定性(任意算法...

weixin_39802132的博客 299

《2020王道》| 数据结构 | 学习笔记 | 第一章 | 绪论

《2020年王道数据结构》考研复习学习笔记重要知识点摘录,本来应该算是转载性质,因为我只是把重要知识点摘抄出来,并不是我自己的想法和经验,但是转载需要原文链接,王道官网并没有给出整本书的详细内容链接,所以暂且选择原创。我在这里申明,该博客只用于个人学习记录。

Wu Y H的博客 5815

2023王道计算机考研数据结构第一章-绪论

2023王道计算机考研数据结构第一章-绪论

weixin_46409637的博客 1922

408学习笔记-数据结构-1-第一章-绪论

此为数据结构学习的总纲,务必牢记。

m0_61968622的博客 1316

信息流广告ROI线性预测看板&投放分析监控看板展示&数据处理入库全流程

此看板数据量太大,在tableau public部署运行速度极慢,因此用图片作展示 数据清洗

Larry_Westside的博客 2314

数据结构与算法学习笔记——第一章:绪论-1-数据结构基本概念,术语与主要学习内容

从今天开始,正式学习电子科大Mooc课程《数据结构与算法》,感谢电子科大的老师的辛勤付出,感谢中国大学Mooc网站的无私奉献! 数据结构基本概念,术语与主要学习内容 中间略… ...

预见未来to50的专栏 189

SAP CO实战:如何用KKA2/CJ88结果分析码搞定项目收入成本匹配(附真实案例)

本文深入探讨了SAP CO模块中KKA2和CJ88结果分析码在项目收入成本匹配中的高阶应用。通过真实案例解析,详细介绍了这两种分析码在分阶段收入确认和终验法项目中的配置技巧与实战经验,帮助财务人员高效解决复杂业务场景下的财务数据处理难题。

weixin_29230773的博客 166

Python自动化监控:实时捕捉LOF基金溢价套利机会并微信预警

本文详细介绍了如何使用Python构建一个自动化监控系统,实时捕捉LOF基金的溢价套利机会。通过AKShare获取基金数据,结合雪球API计算实时溢价率,并利用企业微信API实现微信推送预警,帮助投资者高效、自动地发现并抓住转瞬即逝的套利机会。

weixin_28327051的博客 522

数据结构学习笔记----第一章绪论

数据结构,绪论,算法,C语言

qq_58300592的博客 852

mac安全干净卸载Anaconda3

主要原因是python命令没有映射到已经安装的python版本上,则需要添加。修改~/.bash_profile文件,将anaconda相关删除。现在想卸载Anaconda,恢复使用mac系统自带的Python。最后在mac的应用目录删除Anaconda。查看所有版本的python所在安装目录。或者不使用软连接映射,也可使用。再次查看python映射。查看python版本。建立软连接,添加映射。

buyue 5961

数据结构习题(第一章绪论)

本文摘要: 数据结构与算法基础练习题解析,包含单项选择题和综合应用题。重点内容包括:1)数据结构三要素(逻辑结构、存储结构、数据运算)的关系;2)算法时间复杂度的计算与分析;3)典型数据结构(线性表、树等)的特性比较。通过16道选择题和3道应用题,详细解析了抽象数据类型、非线性数据结构、相同逻辑结构不同存储实现的效率差异等问题,并提供了时间复杂度计算的具体方法和示例。特别收录了2011-2022年考研真题中的典型算法分析题,涵盖对数级、线性、平方级等不同时间复杂度类型的判断方法。

yanxing_D的博客 862

C#量化交易的市场数据采集与分析:从0到1构建你的‘数据雷达’——对比5大神器,代码实战全解析!

数据是量化交易的‘氧气’,而好的数据采集与分析是你的‘呼吸机’!本文5大神器+代码实战,总有一款适合你!(本文代码均经过测试,但请根据实际需求调整!

java专栏 727

OpenGL 进阶系列10 - 光线跟踪实现简介(Ray Tracing)

OpenGL 实现光线跟踪(Ray Tracing)是一个相对复杂但有趣的挑战,通常用于生成高度逼真的图像效果,如反射、折射、阴影等。OpenGL 本身并不是为光线跟踪设计的,但可以通过结合计算着色器和现代 OpenGL 功能实现光线跟踪。光线跟踪的基本思路是从相机(或视点)出发,发射光线并计算这些光线与场景中物体的交点。光线与场景中物体相交的计算。计算交点的光照(基于表面法线、光源位置、材质等)。反射和折射的处理(如果物体是透明或反射的)。

GPU全栈博主 1534

《数据结构》严蔚敏版 第一章绪论

《数据结构》严蔚敏版个人学习笔记-第一章绪论第一章 绪论1、数据结构的三要素2、数据结构的定义3、计算机解决问题的过程4、数据的定义5、数据元素(又称结点、记录)6、数据项7、数据对象8、几个概念之间的层次关系9、数据类型10、抽象数据类型11、算法12、算法设计的要求13、评价算法的标准14、算法效率的度量方法15、抽象数据类型16、两个没有搞懂的概念写在后面 第一章 绪论 1、数据结构的三要素 数据结构三要素: ①逻辑结构:两种——线性结构-线性表、队列、栈、串等;非线性结构-树、图等。 ②物理结构(存

qq_32769373的博客 355

【单智能体】AI 数据分析智能体案例讲解(附完整源码)

本案例将引导您构建一个基于 AI 的数据分析智能体,让用户能够通过自然语言查询来分析 CSV 和 Excel 文件中的数据,无需掌握 SQL 知识。该智能体使用 Agno Agent 框架集成 OpenAI GPT-4o 模型,并利用 DuckDB 提供高效的数据处理能力。

rengang66的博客 237

408数据结构第一章:绪论

408数据结构第一章:绪论

m0_74983085的博客 1034

6、云计算中的多核技术:架构、并行性与局限性

本博文深入探讨了云计算中多核技术的架构、并行性及其局限性。文章详细介绍了多核处理器的基础概念、并行硬件和软件的设计原理,并对硬件和软件并行性进行了分类和分析。同时,文章讨论了多核架构在实际应用中面临的挑战,如功率墙、内存墙和ILP墙等问题,并提出了应对策略。此外,还总结了多核技术在高性能计算、实时处理和云计算等领域的应用机遇。文章旨在帮助读者更好地理解多核技术的关键问题,并为未来的技术探索提供方向。

java5的博客 122

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

上一篇: 【FreeRTOS学习笔记】0 FreeRTOS实时内核使用指南阅读笔记
下一篇: 【C++学习笔记】北京大学《程序设计实习》目录
智驾
博客等级 码龄11年 6668粉丝 574原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智驾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值