VS基础使用,算法的评价,数据结构基础概念,顺序表
2021/4/14 20:28:43
本文主要是介绍VS基础使用,算法的评价,数据结构基础概念,顺序表,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、vs 基础使用
使用“解决方法” 来管理所有的工程。二、算法的评价
1、时间复杂度
时间复杂度是算法的与问题规模大小的一个函数。 从算法中抽取一个基本操作,以基本操作执行的次数来衡量算法的效率1、O(1)
没有循环,或者循环的次数与问题的规模没有关系 -- 循环是的次数是一个常数2、O(n)
算法肯定是有循环或者递归, 而且这种循环或递归执行的次数与问题规模相等 (控制循环或者递归的变量是以+1,或者 -1的方式趋于退出条件发生的)。3、 O(n^2)
两个O(n)相乘。 循环嵌套4、O(logn)
算法肯定是有循环或者递归, 而且这种循环或递归执行的次数与问题规模有关 系,控制循环或递归的变量是以*2或者/2的方式趋于结束的。 log2(n) 时间复杂度表示的规则: 1. 取最高指数项 n^2 + n 2. 去掉系数 for(int i = 0; i < n/2; ++i) 3. 去掉常数2、空间复杂度
算法执行过程中所需要的额外的(除了存储计算的数据本身)存储空间与问题规 模n的函数关系。 计算方法: 算法实现过程中有没有使用malloc或者new 申请与问题规模n相关的空间 算法有没有使用递归,并且递归的次数与问题规模n相关 一个函数开辟的堆 栈空间比较大三、数据结构的基础概念
什么是数据结构: 相互之间存在一种或多种特定关系的数据元素的集合。 关系: 集合 线性关系 树形关系 图形关系 要学习的数据结构: 数据之间的存储关系如何用C语言表示 针对于一个结构中存储的数据有相对应的操作方法。四、顺序表
线性关系: 顺序结构 顺序在逻辑上是连续的,在物理存储上也是连续的 链式结构 在逻辑上是连续的,在物理存储上是不连续的1、顺序表的结构
顺序表结构中需要的成员: 1、用于存储数据元素的空间位置 2、当前已存储的数据元素的个数 -- 记录存储数据的位置 3、空间能够存储的元素的总量 -- 扩容 4、顺序表存储数据元素时,必须从空间的起始位置开始连续存储2、顺序表的C语言结构设计
1 typedef int ElemType; 2 typedef struct SqList 3 { 4 ElemType *data; // 指向用于存储ElemType类型的堆区空间的指针 5 int length; // 长度: 以存储的属于元素的个数 6 int size; // 空间的大小,记录的是能够存储的元素个数 7 }SqList; 8 // 初始化 9 void InitSqList(SqList *sq_list, int init_size); 10 // 销毁 11 void DestroySqList(SqList *sq_list); 12 // 插入 13 /* 14 1、头插法 15 2、尾插法 16 3、按位置插入 17 */ 18 bool InsertSqListHead(SqList *sq_list, ElemType value); 19 bool InsertSqListRear(SqList *sq_list, ElemType value); 20 bool InsertSqListPos(SqList *sq_list, ElemType value, int 21 pos); 22 // 删除 23 /* 24 1、头删法 25 2、尾删法 26 3、按位置删 27 4、按值删除 28 */ 29 bool DeleteSqListHead(SqList *sq_list); 30 bool DeleteSqListRear(SqList *sq_list); 31 bool DeleteSqListPos(SqList *sq_list, int pos); 32 bool DeleteSqListValue(SqList *sq_list, ElemType value); 33 // 查找 : 返回位置(下标):取值范围 0 -- length-1 34 int FindSqList(SqList *sq_list, ElemType value, bool 35 (*Compare)(ElemType, ElemType) fun); 36 // 判空 37 bool Empty(SqList *sq_list); 38 // 判满 39 bool Full(SqList *sq_list);
3、方法实现
1 void InitSqList(SqList *sq_list, int init_size) 2 { 3 if (sq_list == nullptr) exit(0); init_size = init_size > 0 ? init_size : DEFAULTSIZE; sq_list->data = (ElemType *)malloc(init_size * 6 sizeof(ElemType)); 7 if (sq_list->data == nullptr) exit(0); sq_list->length = 0; 9 sq_list->size = init_size; }
1、vs 基础使用 使用“解决方法” 来管理所有的工程。 2、算法的评价 1、时间复杂度 时间复杂度是算法的与问题规模大小的一个函数。 从算法中抽取一个基本操作,以基本操作执行的次数来衡量算法的效率 1、O(1) 没有循环,或者循环的次数与问题的规模没有关系 -- 循环是的次数是一个常数 2、O(n) 算法肯定是有循环或者递归, 而且这种循环或递归执行的次数与问题规模相等 (控制循环或者递归的变量是以+1,或者 -1的方式趋于退出条件发生的)。 3、 O(n^2) 两个O(n)相乘。 循环嵌套 4、O(logn)算法肯定是有循环或者递归, 而且这种循环或递归执行的次数与问题规模有关 系,控制循环或递归的变量是以*2或者/2的方式趋于结束的。 log2(n) 时间复杂度表示的规则: 1. 取最高指数项 n^2 + n 2. 去掉系数 for(int i = 0; i < n/2; ++i) 3. 去掉常数 2、空间复杂度 算法执行过程中所需要的额外的(除了存储计算的数据本身)存储空间与问题规 模n的函数关系。 计算方法: 算法实现过程中有没有使用malloc或者new 申请与问题规模n相关的空间 算法有没有使用递归,并且递归的次数与问题规模n相关一个函数开辟的堆 栈空间比较大 3、数据结构的基础概念 什么是数据结构: 相互之间存在一种或多种特定关系的数据元素的集合。 关系: 集合 线性关系 树形关系 图形关系 要学习的数据结构: 数据之间的存储关系如何用C语言表示 针对于一个结构中存储的数据有相对应的操作方法。 4、顺序表 线性关系: 顺序结构顺序在逻辑上是连续的,在物理存储上也是连续的 链式结构在逻辑上是连续的,在物理存储上是不连续的 1、顺序表的结构顺序表结构中需要的成员: 1、用于存储数据元素的空间位置 2、当前已存储的数据元素的个数 -- 记录存储数据的位置 3、空间能够存储的元素的总量 -- 扩容 4、顺序表存储数据元素时,必须从空间的起始位置开始连续存储 2、顺序表的C语言结构设计 typedefintElemType; typedefstructSqList { ElemType*data; // 指向用于存储ElemType类型的堆区空间的指针 intlength; // 长度: 以存储的属于元素的个数 intsize; // 空间的大小,记录的是能够存储的元素个数 }SqList; // 初始化 voidInitSqList(SqList*sq_list, int init_size); // 销毁 voidDestroySqList(SqList*sq_list); // 插入 /* 1、头插法 2、尾插法 3、按位置插入 */ boolInsertSqListHead(SqList*sq_list, ElemType value); boolInsertSqListRear(SqList*sq_list, ElemType value); boolInsertSqListPos(SqList*sq_list, ElemType value, int pos); // 删除 /* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 233、方法实现 1、头删法 2、尾删法 3、按位置删 4、按值删除 */ boolDeleteSqListHead(SqList*sq_list); boolDeleteSqListRear(SqList*sq_list); boolDeleteSqListPos(SqList*sq_list, int pos); boolDeleteSqListValue(SqList*sq_list, ElemType value); // 查找 : 返回位置(下标):取值范围 0 -- length-1 intFindSqList(SqList*sq_list, ElemType value, bool (*Compare)(ElemType, ElemType) fun); // 判空 boolEmpty(SqList*sq_list); // 判满 boolFull(SqList*sq_list); 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 voidInitSqList(SqList*sq_list, int init_size) { if (sq_list == nullptr) exit(0); init_size = init_size > 0 ? init_size : DEFAULTSIZE; sq_list->data = (ElemType *)malloc(init_size * sizeof(ElemType)); if (sq_list->data == nullptr) exit(0); sq_list->length = 0; sq_list->size = init_size; }
这篇关于VS基础使用,算法的评价,数据结构基础概念,顺序表的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南