草庐IT

航海家

全部标签

【海贼王的数据航海】排序——概念|直接插入排序|希尔排序

目录1->排序的概念及其运用1.1->排序的概念1.2->常见的排序算法2->插入排序2.1->基本思想2.2->直接插入排序2.2.1->代码实现2.3->希尔排序(缩小增量排序)2.3.1->代码实现1->排序的概念及其运用1.1->排序的概念排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序不变,即在原序列中,r[i]=r[j],且r[i]在 r[j]之前,而在排序后的序列中,r[i]仍在 r[j]之前,则称这种排序算法是稳定的;否则称为不稳定。内部

【海贼王的数据航海:利用数据结构成为数据海洋的霸主】探究二叉树的奥秘

目录1->树的概念及结构1.1->树的概念1.2->树的相关概念1.3->树的表示1.4->树在实际中的运用(表示文件系统的目录树结构)2->二叉树概念及结构2.1->二叉树的概念2.2->现实中的二叉树2.3->特殊的二叉树2.4->二叉树的性质2.5->二叉树的存储结构3->二叉树的顺序结构及实现3.1->二叉树的顺序结构3.2->堆的概念及结构3.3->堆的实现3.3.1->堆向下调整算法3.3.2->堆的创建3.3.3->建堆的时间复杂度3.3.4->堆的插入3.3.5->堆的删除3.3.6->堆的代码实现Heap.hHeap.c3.4->堆的应用3.4.1->堆排序4->二叉树链式结

【海贼王的数据航海:利用数据结构成为数据海洋的霸主】栈和队列

目录1->栈1.1->栈的概念及结构1.2->栈的实现1.2.1->Stack.h1.2.2->Stack.c1.2.3->Test.c2->队列2.1->队列的概念及结构2.2->队列的实现2.2.1->Queue.h2.2.2->Queue.c1->栈1.1->栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(LastInFirstOut)的原则。压栈:栈的插入操作叫进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。1.2->栈的实现栈的实现一般

【海贼王的数据航海:利用数据结构成为数据海洋的霸主】链表—双向链表

目录往期1-> 带头+双向+循环链表(双链表)1.1->接口声明1.2->接口实现1.2.1-> 双向链表初始化1.2.2 -> 动态申请一个结点1.2.3 -> 双向链表销毁1.2.4 -> 双向链表打印1.2.5 -> 双向链表判空1.2.6 -> 双向链表尾插1.2.7 -> 双向链表尾删1.2.8 -> 双向链表头插1.2.9 -> 双向链表头删1.2.10-> 双向链表查找1.2.11->  双向链表在pos的前面进行插入1.2.12-> 双向链表删除pos位置的节点2->顺序表和链表的区别3->完整代码3.1->List.c3.2->List.h3.3->Test.c往期链表-单链

【C++航海王:追寻罗杰的编程之路】vector

目录1->vector的介绍及使用1.1->vector的介绍1.2->vector的使用1.2.1->vector的介绍1.2.2->vectoriterator的使用1.2.3->vector空间增长问题1.2.4->vector的增删查改1.2.5->vector迭代器失效问题2->vector的深度剖析及模拟实现2.1->vector的模拟实现2.2->使用memcpy拷贝问题2.3->动态二维数组理解1->vector的介绍及使用1.1->vector的介绍vector的文档介绍vector是表示可变大小数组的序列容器;像数组一样,vector也采用的连续存储空间来存储元素。也就意味

【海贼王的数据航海:利用数据结构成为数据海洋的霸主】链表—单链表

目录1->链表1.1->链表的概念及结构1.2->链表的分类2-> 无头+单向+非循环链表(单链表)2.1->接口声明2.2->接口实现2.2.1-> 动态申请一个结点2.2.2 -> 单链表的打印2.2.3 -> 单链表的尾插2.2.4 -> 单链表的头插2.2.5 -> 单链表的尾删2.2.6 -> 单链表的头删2.2.7 -> 单链表的查找2.2.8 -> 单链表在pos位置之前插入x2.2.9 -> 单链表在pos位置之后插入x2.2.10 -> 单链表删除pos位置的值2.2.11-> 单链表删除pos位置之后的值2.3->完整代码2.3.1->SList.h2.3.2->SList

【海贼王的数据航海:利用数据结构成为数据海洋的霸主】时间复杂度 | 空间复杂度

目录1->算法效率1.1->如何衡量一个算法的好坏?1.2->算法的复杂度2->时间复杂度2.1->时间复杂度的概念2.2->大O的渐进表示法2.3->常见时间复杂度计算3->空间复杂度4->常见复杂度对比1->算法效率1.1->如何衡量一个算法的好坏?对于以下斐波那契数列:#define_CRT_SECURE_NO_WARNINGS#includeusingnamespacestd;longlongfib(intN){ if(N用递归实现斐波那契数列,看上去代码十分简洁,但简洁一定就是好算法吗?如何衡量一个算法的好坏?1.2->算法的复杂度算法在编写成可执行程序后,运行时需要耗费时间资源和空

【C++航海王:追寻罗杰的编程之路】关于模板,你知道哪些?

目录1->泛型编程2->函数模板2.1->函数模板概念2.2->函数模板格式2.3->函数模板的原理2.4->函数模板的实例化2.5->函数参数的匹配原则3->类模板3.1->类模板的定义格式3.2->类模板的实例化1->泛型编程怎样实现一个通用的交换函数?#includeusingnamespacestd;voidSwap(int&left,int&right){ inttemp=left; left=right; right=temp;}voidSwap(double&left,double&right){ doubletemp=left; left=right; right=temp;}

【C++航海王:追寻罗杰的编程之路】string类

目录1->为什么学习string类?1.1->C语言中的字符串2->标准库中的string类2.1->string类2.2->string类的常用接口3->string类的模拟实现3.1->经典的string类问题3.2->浅拷贝 3.3->深拷贝3.3.1->传统写法的string类3.3.2->现代写法的string类3.4->写时拷贝3.5->string类的模拟实现1->为什么学习string类?1.1->C语言中的字符串在C语言中,字符串是以‘\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串时分离开的,不太符合OOP的思想,而且

【C++航海王:追寻罗杰的编程之路】类与对象你学会了吗?(中)

目录1->类的六个默认成员函数2->构造函数2.1->概念2.2->特性3->析构函数3.1->概念3.2->特性4->拷贝构造函数4.1->概念4.2->特征5->赋值运算符重载5.1->运算符重载5.2->赋值运算符重载5.3->前置++和后置++重载6->日期类的实现7->const成员8->取地址及const取地址操作符重载1->类的六个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。classDate{};2->构造函
12