数据结构
wym_king
谁终将声震人间,必长久深自缄默;谁终将点燃闪电,必长久如云漂泊。
展开
-
HDU 6109 数据分割(并查集+set维护)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=6109题意:给n行数,a,b,e e为0表示两个数不相等,e为1表示相等。要求划分数据 ,让每一组数据都不符合,去掉最后一个就符合,题解:相等的就在一个集合,集合之间有边表示两个集合不相等例如给出a,b,e, 并查集初始化后祖先为x,y若e==1:x==y时,a==b,在一个...原创 2018-08-18 16:42:20 · 214 阅读 · 0 评论 -
快速排序 c/c++
选择基准数(为方便选取第一个元素),定义两个指针 i, ji从头开始扫, j从尾开始扫使得基准数左边的元素小于基准数, 基准数右边的元素大于基准数由于基准数选取的是第一个元素,j 先动, 找到小于基准数的值,i再动, 找到大于基准数的值,交换i和j的值直到i和j相遇, 则把相遇位置的值和基准数的值交换这时把数组看作只有三个元素,小于基准数,基准数, 大于基准数,此时是有序的...原创 2018-12-26 11:36:05 · 126 阅读 · 0 评论 -
直接插入排序 希尔排序
直接插入排序:对数组 int arr1[] ={1,4,2,7,9,8,3,6};第一个元素看作有序,后面元素看作无序:【1】4 2 7 9 8 3 6插入过程【】内表示有序,按照从小到大排序【1 4】 2 7 9 8 3 6 每次插入一个元素,插入4【1 2 4】 7 9 8 3 6 插入2,2与4比较,2比4小,交换2和4【1 2 4 7】 9 ...原创 2018-12-24 15:44:03 · 100 阅读 · 0 评论 -
排序分析
上图来自:http://blog.csdn.net/hguisu/article/details/7776068快速排序直接插入排序希尔排序堆排序原创 2018-12-29 15:08:02 · 234 阅读 · 0 评论 -
堆排序
堆节点的访问通常堆是通过一维数组来实现的。在数组起始位置为0的情形中:父节点i的左子节点在位置(2*i+1); 父节点i的右子节点在位置(2*i+2); 子节点i的父节点在位置floor((i-1)/2); 下标从0开始,最后一个父节点位置为len/2-1 (len表示数组长度) ( (len - 1)-1)/2 len/2 -1 (...原创 2018-12-29 15:06:39 · 120 阅读 · 0 评论 -
二叉排序树
二叉排序树(Binary Sort Tree)性质:1.若它的左子树不空,则左子树上所有结点的值均小于它的根节点的值;2.若它的右子树不空,则右子树上所有结点的值均大于它的根节点的值;3.它的左右子树也分别为二叉排序树操作:1.插入,若一个元素比当前结点小,插入左边,反之插入右边2.删除 1)删除结点有左右孩子,找到这个结点右子树中最小的替代当前结点 ...原创 2018-12-17 23:44:56 · 232 阅读 · 0 评论 -
Hash(散列)冲突解决 线性探测再散列和二次探测再散列
线性探测再散列例如 哈希函数为: H(key) = key %13,key 为关键字,采用开放地址法中的线性探测再散列解决冲突,依次输入11 个关键字,16,74,60,43,54,90,46,31,29,88,77,构造哈希表 如图,例如 16%13=3,将16放入3号位置,29%13 = 3,将29放入3号位置,而此时3号位已经有元素。就顺着表往后放,直到6...原创 2018-12-21 15:09:15 · 33448 阅读 · 12 评论 -
数据结构第四次实验 矩阵快速转置与矩阵加法
#include <bits/stdc++.h>using namespace std; struct xyz { int i,j; int v;}Triple; struct xsjz{ // 存储系数矩阵 xyz data[100]; int mu,nu,tu; }TsMatrix; int oder[10][3] = {{1,2,12},{1,3...原创 2018-12-04 00:15:27 · 316 阅读 · 0 评论 -
中序遍历二叉树(栈思想)
void inorder(node *root){ deque<node*> q; while(!q.empty())q.pop_front(); node * t = root; do{ while(t) { q.push_back(t); t = t->lc; } t = q.back(); printf("%c ",t->c...原创 2018-11-26 20:14:00 · 402 阅读 · 0 评论 -
输入广义表建立二叉树(方法+代码)
输入广义表表示的字符串,str对于 str[i],设置变量 k = -1若为‘(’,令 k = 0若为‘,’,k=1若为‘)’,栈顶元素出栈 若为字符时 k = -1, 该元素为树的根结点 k = 0, 栈首元素左孩子为str[i],并把str[i]压入栈...原创 2018-11-26 19:53:35 · 4015 阅读 · 3 评论 -
数据结构实验三迷宫问题
#include <bits/stdc++.h>using namespace std;int m=0,n=0;//输入m行n列的矩阵//初始化8个方向int dir[8][2]= {{0,1},{0,-1},{1,0},{1,-1},{1,1},{1,-1},{-1,1},{-1,-1}};int mp[505][505];//地图int visit[505][505]...原创 2018-11-19 18:11:56 · 887 阅读 · 0 评论 -
一元稀疏多项式计算 (数据结构实验)
#include <bits/stdc++.h>using namespace std;struct node{ float coef;//系数 int exp;//指数 node * next; };node * creat(node * l){ float coef; int exp; l = new node; node * p,* q; scan...原创 2018-11-02 13:33:48 · 3673 阅读 · 0 评论 -
结构体指针
#include<stdio.h>#include <bits/stdc++.h>#include <cstring>using namespace std;const int l_size = 100;const int l_z = 10;typedef struct stu{ int sno; char name[20]; }ElemT...原创 2018-10-10 13:06:02 · 160 阅读 · 0 评论 -
引用调用 (c/c++)
引用,是C++中提出来的一种新的使用变量的方式,即,给实际变量起个别名,通过这个别名来引用实际的变量。标准C中不支持变量的引用。只不过有这种方法。#include <stdlib.h>#include <stdio.h>void f(int *t){ (*t)++;//注意运算优先级 }int main(){ int t; t=0; f(&...原创 2018-10-10 12:46:07 · 3235 阅读 · 1 评论 -
HDU 2586 How far away ?(最长公共祖先 LCA模板题)
离线版本的思路是:每个点都把与它有关的查询放进它的那个vector里,然后对这棵树进行一次dfs,在dfs的过程中直接得出所有查询的答案,复杂度是O(n+q)。具体来说,假设有一个查询u,v,当遍历到u的时候,如果v还没有访问,就先不管这个查询;如果v已经访问过了,则由于进行的是深度优先搜索,当前结点与v的最近公共祖先一定还没有检查过,然而这个最近公共祖先的包含v的子树一定已经搜索过了...原创 2018-08-19 21:20:07 · 234 阅读 · 0 评论 -
P1113 杂务 拓扑
#include <bits/stdc++.h>#define ll long long using namespace std;const int maxn = 100000000;int head[maxn];int cnt;int val[20005],in[20005];bool book[20005];int ans[20005];int n,as;...原创 2019-10-02 16:33:27 · 226 阅读 · 0 评论