随笔分类 -  数据结构-算法

算法——排序——交换排序(2)——快速排序
摘要:算法——排序——交换排序(2)——快速排序 什么是快速排序(QuickSort) 快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序 阅读全文
posted @ 2021-06-04 19:35 Sna1lGo 阅读(139) 评论(0) 推荐(0)
算法——排序——插入排序(2)——希尔排序
摘要:算法——排序——插入排序(2)——希尔排序 简单插入排序的问题: 假设:数组 arr = {2,3,4,5,6,1} 这时需要插入的数 1(最小), 这样的过程是: {2,3,4,5,6,6} {2,3,4,5,5,6} {2,3,4,4,5,6} {2,3,3,4,5,6} {2,2,3,4,5, 阅读全文
posted @ 2021-06-04 01:07 Sna1lGo 阅读(110) 评论(0) 推荐(0)
算法——排序——插入排序(1)——直接插入排序
摘要:算法——排序——选择排序(1)——直接插入排序 什么是直接插入排序(Straight Insertion Sort) 简单来说就是将一条记录插入到已经排好序的有序表里面。通常是假设第一个已经排好序,后面的从第二个开始抽出来和前面的进行直接插入排序。 代码实现 void InsertSort(int* 阅读全文
posted @ 2021-05-25 20:12 Sna1lGo 阅读(283) 评论(0) 推荐(0)
算法——排序——选择排序(1)——简单选择排序
摘要:算法——排序——选择排序(1)——简单选择排序 什么是简单选择排序 简单来说就是每次遍历数组将最大的或最小的选择出来后移动到一个地方,然后再把剩下的继续选最大或最小的再移动,移动到最后一个就不用移动了,因为前面已经排好序了。 也可以简单的理解为,每次选出一个最大或者最小的,然后再从剩下的选最大或者最 阅读全文
posted @ 2021-05-25 00:16 Sna1lGo 阅读(144) 评论(0) 推荐(0)
算法——排序——交换排序(1)——冒泡排序
摘要:算法——排序——交换排序(1)——冒泡排序 什么是冒泡排序 冒泡排序的英文是bubble sort,是八大内部排序算法中的最基础的交换排序算法。 冒泡排序之所以叫冒泡排序,正是因为这种排序算法的每一个元素都可以像小气泡一样,根据自身大小,一点一点地向着数组的一侧移动。 就像碳酸饮料的气泡一样,汽水中 阅读全文
posted @ 2021-05-24 00:12 Sna1lGo 阅读(91) 评论(0) 推荐(0)
算法——计算算法效率
摘要:算法——计算算法效率 度量 度量一个程序(算法)的执行时间有两种办法: 1 事后统计法 2 事前统计法 事后统计法 计算一个程序或算法,跑完后总共用时。这种方法可行,但是有两个不足:1:必须得运行后才能得到结果。2:所得的时间统计量还依赖于计算机的硬件、软件等环境因素,无法很简单的一口咬定是算法的所 阅读全文
posted @ 2021-05-10 00:50 Sna1lGo 阅读(976) 评论(0) 推荐(0)
算法——排序——大纲
摘要:算法——排序——大纲 一些常见的排序算法,算是排序算法的基础吧。 排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。 排序的分类: 1) 内部排序: 指将需要处理的所有数据都加载到内部存储器中进行排序。 2) 外部排序法: 数据量过大,无法全部加载到内存 阅读全文
posted @ 2021-05-09 11:53 Sna1lGo 阅读(72) 评论(0) 推荐(0)
数据结构-图-遍历方式
摘要:数据结构-图-遍历方式 深度优先遍历 代码实现:https://www.cnblogs.com/Sna1lGo/p/14368357.html 广度优先遍历 利用队列来处理,先将根节点入队,后面出一个队,然后把出队的节点的连接节点入队来实现广度优先遍历 实现代码:https://www.cnblog 阅读全文
posted @ 2021-02-03 17:56 Sna1lGo 阅读(66) 评论(0) 推荐(0)
数据结构-图-存储结构
摘要:数据结构-图-存储结构 图如何利用代码来实现 邻接矩阵 图的邻接矩阵存储方式是用两个数组来表示图。 一个一维数组存储图中顶点信息, 一个二维数组(邻接矩阵)存储图中的边或弧的信息。 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 看一个实例,下图左就是一个无向图 从上面可以看出,无向图的边 阅读全文
posted @ 2021-02-03 14:02 Sna1lGo 阅读(165) 评论(0) 推荐(0)
数据结构-图-概念
摘要:数据结构-图-概念 图的概念 图的定义和术语 图的定义 图是由顶点的有穷非空集合和顶点之间的边的集合组成的,通常表示为G=(V,E),其中,G表示一个图,V表示G中顶点的集合,E表示G中边的集合 无向边 若顶点Vi 到Vj 的边没有方向,则称这条边为无向边,用无序偶对 (Vi ,Vj)来表示 有向边 阅读全文
posted @ 2021-01-30 12:52 Sna1lGo 阅读(233) 评论(0) 推荐(0)
数据结构-树-哈夫曼树
摘要:数据结构-树-哈夫曼树 概念 路径和路径长度 在一棵树中,从一个节点往下可以达到的孩子或孙子节点之间的通过,称为路径。通路中分支的数目称为路径长度。若规定根节点的层数为1,则从根节点到第L层节点的路径长度为L-1 节点的权及带权路径长度 若将树中节点赋给一个有着某种意义的数值,则这个数值称为该结点的 阅读全文
posted @ 2021-01-28 14:49 Sna1lGo 阅读(137) 评论(0) 推荐(0)
数据结构-二叉树编程
摘要:数据结构-二叉树编程 求二叉树叶子数量 如果节点的左子树与右子树相同且为NULL int num=0;void GetLeavesNum(BN* a){ if (a == NULL) return; if (a->lchild == NULL && a->rchild == NULL) { num+ 阅读全文
posted @ 2021-01-28 02:09 Sna1lGo 阅读(129) 评论(0) 推荐(0)
数据结构-二叉树
摘要:数据结构-二叉树 二叉树基本性质 1 二叉树的基本性质 1.1 性质1: 在二叉树的第i层上至多有2^(i-1)个结点(i>0) 1.2 性质2: 深度为k的二叉树至多有2^k - 1个结点(k>0) 1.3 性质3: 对于任何一棵二叉树,若度为2的结点数有n2个,则叶子数(n0)必定为n2+1 ( 阅读全文
posted @ 2021-01-28 00:38 Sna1lGo 阅读(134) 评论(0) 推荐(0)
数据结构-树
摘要:数据结构-树 树——是一种专门用来解决一对多的数据结构,参考一个文件夹下面有很多个文件 树的基本概念 根 没有前驱 叶子 没有后继 双亲 直接前驱 孩子 直接后继 节点的度 直接后继的数量 树的度 节点的度中取最大的值 树的高度/深度 最大层数 表示法:图形、广义 、左孩子右兄弟(将多叉树转为二叉树 阅读全文
posted @ 2021-01-27 22:38 Sna1lGo 阅读(125) 评论(0) 推荐(0)
队列的链式结构
摘要:1 //链式队列 2 #include<stdio.h> 3 #include<stdlib.h> 4 typedef int Status; 5 typedef struct node { 6 char a; 7 struct node* next; 8 }NODE; 9 typedef stru 阅读全文
posted @ 2020-12-21 22:35 Sna1lGo 阅读(145) 评论(0) 推荐(0)
栈的链式结构
摘要:1 //链式栈 2 #include<stdio.h> 3 #include<stdlib.h> 4 typedef struct Node { 5 char a; 6 struct Node* next; 7 }NODE; 8 //节点 9 typedef struct StackLink { 1 阅读全文
posted @ 2020-12-21 19:24 Sna1lGo 阅读(176) 评论(0) 推荐(0)
C数据结构-线性队列
摘要:1 //顺序队列 2 #define MAXSIZE 10//假设队列最多容纳10个数,其实因为是循环队列所以其实只最多能容纳9个数 3 #include<stdio.h> 4 #include<stdlib.h> 5 typedef int Status;//用Status来当作bool类型使用 阅读全文
posted @ 2020-12-21 12:38 Sna1lGo 阅读(145) 评论(0) 推荐(0)
C语言顺序栈实现
摘要:#include<stdio.h> #define MAXN 20//初始顺序栈的空间为20 typedef int SElemType; typedef int Status; typedef struct SqStack{ char stack[MAXN];//假设栈的数据结构为char int 阅读全文
posted @ 2020-12-21 12:02 Sna1lGo 阅读(204) 评论(0) 推荐(0)
链表-约瑟夫环
摘要:链表-约瑟夫环 假设有n个死刑犯,将犯人拍成一圈,每个人都有个自己的编号,选择一个人作为起点,然后顺时针从1~k整数数,数到k的人退出,被处决的人的编号为下一个k,然后把这个人提出来重新算,知道最后只剩下一个人活着 1 #define _CRT_SECURE_NO_WARNINGS 2 #inclu 阅读全文
posted @ 2020-12-19 23:51 Sna1lGo 阅读(145) 评论(0) 推荐(0)
只遍历一次查找单链表的中间元素
摘要:只遍历一次查找单链表的中间元素 如果没有限制的话,通常可以使用遍历一次单链表然后返回到链表长度再根据是奇数还是偶数来处理。 这里利用两个指针来处理,一个快指针一个慢指针,快指针一次走两步,慢指针一次走一步,当单链表为奇数时,快指针的下一个为NULL,直接取慢指针的内容。 当单链表为偶数时,快指针的下 阅读全文
posted @ 2020-12-18 01:46 Sna1lGo 阅读(502) 评论(0) 推荐(0)