数据结构学习笔记
聪明乖巧的小狮子
这个作者很懒,什么都没留下…
展开
-
BFS,DFS python实现
def DFS(graph,s): """ :param graph: 输入的图 :param s: BFS的起始点 :return: NONE """原创 2022-01-24 21:16:58 · 629 阅读 · 0 评论 -
排序算法整理3
改进版冒泡排序:使用pos记录bound(边界)#include "iostream"using namespace std;void sort(int arr[],int n){ int pos=n; while(pos!=0) { int bound=pos; pos=0; for(int i=1;i<bound;i++) { if(arr[i]>arr[i+1])原创 2021-05-31 18:55:16 · 68 阅读 · 0 评论 -
kruscal求最小生成树
kruscal算法:对每条边的权值进行从小到大排序,然后从小到大取权值最小的边,如取出的边会在树中产生回路则舍去,取下一条;若不会产生回路则加入到树中。判断是否会产生回路的方法为:在初始状态下给每个顶点赋予不同的标记,对于遍历过程的每条边,其都有两个顶点,判断这两个顶点的标记是否一致,如果一致,说明它们本身就处在一棵树中,如果继续连接就会产生回路;如果不一致,说明它们之间还没有任何关系,可以连接,同时连接后会将其顶点标记改变。#include <iostream>#include <原创 2021-05-28 22:11:01 · 290 阅读 · 0 评论 -
最小生成树prim算法
prim算法(选顶点)不断选取最小权值的边并把对应的顶点不断并入的过程过程:1.随意选取起点:随意选择一个顶点作为起始点(不会影响结果),现在我们设U集合为当前所找到最小生成树里面的顶点,T集合为所找到的边。2.在前一步的基础上寻找最小权值: 查找一个顶点在U={v1}集合中,另一个顶点在V-U集合中的最小权值3.继续寻找最小权值:查找一个顶点在U={v1,v2}集合中,另一个顶点在V-U集合中的最小权值4.每次都选取权值最小的边,但不能构成回路,构成环路的边则舍弃。遇到权值相等,又均不构成回原创 2021-05-28 14:08:19 · 757 阅读 · 0 评论 -
查找算法 1
线性查找int search(int a[],int n,int key){ a[0]=key; //哨兵 for(int i=n;a[i]!=key;i--) { return i; //查找成功ASL=n+1/2 ; 不成功则ASL=n+1 }}二分查找(折半查找)方法一int sreach1(int a[],int n,int key,int num){ int low=1; int high=n; wh原创 2021-05-26 17:59:51 · 69 阅读 · 0 评论 -
排序算法整理2
希尔排序(缩小增量排序) 时间复杂度:O(nlogn)~O(n^2)#include "iostream"using namespace std;void shell_sort( int arr[], int n){ int i ; //循环变量 int j; //循环变量 int d; //增量 int key; //临时保存一个变量 for(d=n/2;d>=1;d=d/2) //逐渐缩短“步长” ,最初分成n/2个组,步长逐渐减小,直至原创 2021-05-25 21:57:37 · 65 阅读 · 0 评论 -
图的创建以及遍历(邻接表)
#include "iostream"#include "iomanip"#include "algorithm"#define maxsize 10using namespace std;int visited[]={0};struct arc_node //边表{ int adjvex; //邻接点下标 arc_node*next_arc; //指向下一条弧节点}; struct vertex_node //存储顶点信息(顶点表){ cha原创 2021-05-21 13:44:29 · 258 阅读 · 0 评论 -
图论学习
定义1.顶点:数据元素2.无向图:图中每个顶点间的连线都是无向线 有向图:图中每个顶点间的连线都是有向线3.边:顶点间的无向线 弧:顶点间的有向线4.邻接点:一条边上的两个顶点互为邻接点;一条弧上的两个顶点,被指向顶点另一个的邻接点5.度:一个顶点的关联的边或弧6.网:带权,也分为无向网和有向网7.路径:接续的边的端点构成的顶点序列8.路径长度:路径上边或弧的数目;路径上边或弧的权值和邻接矩阵表示顶点之间相邻关系的矩阵。设G=(V,E)是一个图,其中V={v1,v2,…原创 2021-05-15 16:38:34 · 129 阅读 · 0 评论 -
Huffman树,Huffman编码与解码
#include<iostream>#include<string>#include<iomanip>#include<algorithm>#include<deque>#include<stack>#include<list>#include<queue>using namespace std;struct node{ int parent; int lchild; int rchil原创 2021-05-12 16:28:51 · 249 阅读 · 0 评论 -
二叉树的创建与操作
#include <iostream>#include <stack>#include <vector>#include "algorithm"#include "queue"using namespace std;template<class T>struct binode{ T data; binode<T>*leftchild; binode<T>*rightchild;};templa原创 2021-05-12 13:51:08 · 89 阅读 · 0 评论 -
数据结构学习笔记-链表,链栈,链式队列
这是最近学习过的数据结构的一些基本线性存储方式,整理一下笔记,其中双链表和循环list等操作,思想类似,就不做整理了//链表操作#include<iostream>using namespace std;template <class T>struct Node //节点设置{ T data; //节点存储的元素原创 2021-04-02 11:26:09 · 126 阅读 · 0 评论