自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 C++数据结构之大数据处理之位图法

位图法,就是用一个位(0或者1)来存储数据的状态,比较适合状态简单,数据量比较大,要求内存使用率低的问题场景。位图法解决问题,首先需要知道待处理数据中的最大值,然后按照size=(maxNumber/32)+1的大小(maxNumber除以几取决于存储数据的类型,如int型就/32)来开辟一个char(取决于存放数据的类型)类型的数组,当需要在位图中查找某个元素是否存在时,首先需要计算该数字对应的数组中的比特位,然后读取值,0表示不存在,1表示存在。

2024-09-21 14:21:01 177

原创 C++数据结构之哈希表

使关键字和其存储位置满足关系:存储位置=f(关键字),这就是一种新的存储技术————散列技术散列技术是在记录的存储位置和它的关键字之间建立的对应关系f,使得每个关键字key对应一个存储位置分f(key),在查找时,根据这个确定的对应关系找到给定key的映射f(key),如果待查找集合中存在这个记录,则必定在f(key)这个位置上。优势:使用与快速查找,时间复杂度为O(n)劣势:占用空间较大。

2024-09-19 21:48:43 754

原创 C语言数据结构之选择排序

从根节点开始,选出左右孩子中较小(大)的那个,去跟父亲节点进行比较,如果比父亲小(大)就交换,然后再往下调,知道叶子结点就结束。堆的两个特性:结构性,用数组表示的完全二叉树;有序性,父亲节点是左子树右子树中的最大值或最小值。2,堆排序(时间复杂度为O(N*logN,以二为底))大堆要求:树中所有父亲节点都大于等于孩子节点。小堆要求:树中所有父亲节点都小于等于孩子节点。(前提是左子树右子树都是大堆或者小堆)1,直接选择排序(效率很低)1,直接选择排序(效率很低)(1)时间复杂度O(N*N)

2024-06-20 20:39:15 247

原创 C语言排序算法之插入排序

(1)直接插入排序:是一种简单的插入排序算法,其基本思想是把待排序的记录按其关键码值得大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插完为止,得到一个新的有序序列。(2)希尔排序:又称缩小增量法,其实分为两步,第一步先分组进行预排序,让数组接近有序,第二步,进行直接插入排序。

2024-05-27 20:33:21 264

原创 C语言数据结构之单链表部分OJ题

第二题:求链表中间元素。

2024-05-17 22:30:57 999

原创 C语言数据结构之二叉树

对于深度为K,有n个节点的二叉树,当且仅当起每一个节点都与深度为K的满二叉树中编号从1——n的节点一一对应。1,满二叉树:一个二叉树,如果每一层的节点数都达到最大值,则这个二叉树就是一个满二叉树,也就是说,如果一个二叉树的层数为K,则节点总数是2^k-1.双亲结点或父节点:若一个节点含有子节点,则称这个节点为其子节点的父节点。孩子节点或子节点:一个节点含有的子树的根节称为该节点的子节点。节点的祖先:从根到该节点所经分支上的所有节点,如A为所有节点的祖先。兄弟节点:具有相同父节点的节点称为兄弟节点。

2024-05-11 21:39:26 384 1

原创 C语言数据结构之队列

只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特性。入队列:进行插入操作的一端称为队尾。出队列:进行删除操作的一端称为对头。

2024-05-11 21:04:29 556 1

原创 C语言数据结构之栈

栈可以分为数组栈和链式栈,如果是链式栈,如果用尾做栈顶,尾插尾删,那么在每次删除数据的时候,需要找到尾的前一个,得设计双向链表,不然删除的效率很低。如果是头插头删,用头做栈顶就可以。栈与之前写的顺序表十分类似,栈是一个后进先出的结构,进行数据的插入和删除的一端称为栈顶,另一端称为栈底,栈的插入叫进栈/压栈/入栈,栈的删除操作叫出栈。显然数组栈的结构占优。

2024-05-09 21:43:31 312

原创 C语言数据结构之双向循环链表

(此处展示的是带哨兵位的链表,在main函数中,SDListNode*plist=NULL;,plist仅仅只是用来存放头结点的地址,往后的一切操作都是在这个头结点之后去进行插入删除,并不会改变plist所存储的值,自然不用传&plist,直接plist即可。由于单链表只能单向访问,在插入删除时有时需要寻找尾结点比较麻烦,在此基础上设置了双向循环链表,头尾互相指定。

2024-05-07 19:31:14 638

原创 C语言数据结构之单链表

单链表的结构其实就是一个连续的结构体,可以把这个结构体看成一个一室一厅的房子,卧室放要存储的数据,餐厅放指向下一个房子的指针(其实就是下一个房子的地址)。链表通过访问指针去找到下一个链表,构成一个线性结构。(其中SLTNode*plist只是一个指针用来存储头结点的地址,可以认为*pphead就是头结点的地址)链表可分为带(不带)哨兵位头结点,循环与非循环链表,以下演示非循环不带哨兵位的链表。

2024-05-06 20:05:46 335 1

原创 C语言数据结构之顺序表

顺序表的结构顺序表的结构顺序表的本质是一个连续的数组用来存储数据。顺序表可分为静态顺序表(空间固定)和动态顺序表(空间可连续开辟)顺序表的接口函数接口函数的实现。

2024-05-04 14:25:19 360 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除