
数据结构
文章平均质量分 74
数据结构
又是这货
这个作者很懒,什么都没留下…
展开
-
并查集--
文章目录b树 #include<iostream> #include<vector> using namespace std;//x是数组的下标 class UnionFindSet { public: //一开始每一个都表示一个独立的集合 UnionFindSet(size_t n) { _v.resize(n, -1); } int FindRoot(int x) { //一直找到负数停止 while (_v[x] >= 0) { .原创 2022-05-09 21:27:52 · 275 阅读 · 0 评论 -
归并、计数排序
文章目录MergeArr MergeArr void MergeArr(int* a, int begin1, int end1, int begin2, int end2, int* tmp) { int left = begin1, right = end2; int index = begin1; while (begin1 <= end1 && begin2 <= end2) { if (a[begin1] < a[begin2]) tmp[i..原创 2021-12-17 22:49:13 · 139 阅读 · 0 评论 -
作业1--
1:设度为i的节点个数为ni, 该树总共有n个节点,则n=n0+n1+n2+n3. 有n个节点的树的总边数为n-1条. 总边数与度之间的关系为:n-1=0n0+1n1+2n2+3n3. 层序遍历=广度优先遍历。前序遍历=深度优先遍历。 2:一颗拥有1000个结点的树度为4,则它的最小深度是 6 如果这棵树每一层都是满的,则它的深度最小,假设它为一个四叉树,高度为h,则这个数的节点个数为(4^h - 1) / 3。n层k叉树,总共有(k^n-1)/k-1。当h = 5, 最大节点数为341, 当h = 6原创 2021-12-10 22:16:45 · 1278 阅读 · 0 评论 -
快速排序-
排序2 上课 sort.c单趟 1、左边比key要小,有边比key大 2、key放到他正确的位置(最终要放的位置),(实际中无法保证选key是中位数,可以考虑至少不要选到最大的或者最小的做key) 选最右边的值做key 那么一定要让左边begin先走,这样能保证他们相遇的位置是一个比key大的位置 快速排序最好的情况 : 每次选的key都是中位数(排好序以后正中间那个值);最坏的情况下:每次选到的key都是最大的或者是最小的,即有序或者接近有序 栈保存递归处理的区间下标,大区间单趟排 分割出的两个小区间,原创 2021-09-14 18:32:08 · 157 阅读 · 0 评论 -
插入希尔选择堆冒泡
插入希尔选择堆冒泡原创 2021-09-12 21:41:15 · 121 阅读 · 0 评论 -
建堆、二叉树
二叉树 孩子的下标是i,则父亲的下标是:(i-1)/2原创 2021-09-07 19:39:42 · 709 阅读 · 2 评论 -
栈、队列1
线性表=有n个元素构成的集合,逻辑结构呈现线性 实现栈建议用数组。 如果是双向链表,哪边是栈顶,哪边是栈底都可以 题目= 若进栈序列为1,2,3,4 ,进栈过程中可以出,则下列不可能的一个出栈序列是 3,1,4,2 (1,4,3,2 2,3,4,1 3,1,4,2 3,4,2,1 栈的作用: 1.如果有后进先出而求的地方,比如迷宫问题 2.递归改成非递归 .h #include<stdio.h> typedef int STDataType; //struct Stack; //{//静态 //原创 2021-09-03 18:31:50 · 284 阅读 · 0 评论 -
顺序表 单链表、双向带头循环链表
双向带头循环链表 List.c #include "List.h" //理解不了则写代码,代码写多了则理解,看懂之后再不看别人写的自己“默写” //双向带头循环链表 //方法1: /*void ListPushBack(ListNode*phead, LTDataType x){ assert(phead); ListNode*tail = phead->prev; ListNode*newnode = BuyListNode(x); //把3个节点(phead\tail\newnode)原创 2021-09-02 20:04:55 · 591 阅读 · 0 评论