数据结构
文章平均质量分 55
dangzhangjing97
这个作者很懒,什么都没留下…
展开
-
单链表的基本算法2---C语言实现
链表原创 2017-11-12 00:57:42 · 603 阅读 · 0 评论 -
数据结构:AVL树的实现(图解AVL树的四种旋转)及AVL的代码实现
二叉搜索树虽然可以缩短查找的效率,但如果数据有序或者接近有序,二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率非常低下AVL树的概念 一棵AVL树或者是空树,或者是具有以下性质的二叉搜索树: 1.它的左右子树都是AVL树; 2.左子树和右子树高度之差(简称平衡因子)的绝对值不超过1(故一个结点的平衡因子可以是-1/0/1)如果一棵二叉搜索树是高度平衡的,它...原创 2018-03-25 15:30:13 · 1948 阅读 · 0 评论 -
数据结构:快速排序
快速排序快速排序使用分治法策略,它的基本思想是 选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据要小,然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列快速排序流程1.从数列中选一个基准值;2.将所有比基准值小的摆放在基准前面,所有比基准值大的摆在基准的后面(...原创 2018-03-27 20:37:09 · 417 阅读 · 0 评论 -
数据结构:红黑树的图解
1.红黑树 红黑树是一棵二叉搜索树,它在每个结点上增加了一个存储位来表示结点的颜色,可以是red或者black,通过对任何一条从根结点到叶子结点简单路径上的颜色来进行约束,红黑树保证最长路径不超过最短路径的2倍,因而近似平衡,而且在实际应用中红黑树比AVL树的性能高2.红黑树的性质 1.每一个结点都是有颜色的,不是红色就是黑色; 2.树的根结点是黑色的; 3.如果...原创 2018-04-11 22:37:35 · 589 阅读 · 2 评论 -
浅析:B树
1.什么是B树 B树是一种适合外查找的搜索树,是一种平衡的多叉树 2.B树的特点 B树的每个结点包含着结点的值和结点所处的位置 3.一棵M阶(M>2)的B树,是一颗平衡的M路(M数就是孩子的个数,即就是有几路那就有几个孩子)平衡搜索树,可以是空树,或者满足以下的性质: (1)根结点至少有两个孩子; (2)每个非根结点至少有M/2个孩子,至多有M个孩子; (3)每个...原创 2018-05-06 22:46:28 · 2307 阅读 · 0 评论 -
数据结构:堆创建&堆插入&堆删除
一、堆 1.定义 有一个集合,K={K0,K1,K2,……Kn-1},把这些数按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki<=K2*i+1且Ki<=K2*i+2(Ki>=K2*i+1且Ki>=K2*i+2)i=0,1,2……,则称这个堆为最小堆(或最大堆)2.堆结点的特性 堆存储在下标为0开始计数的数组中,因此在堆中给定下标为i的结点...原创 2018-05-23 16:44:19 · 1717 阅读 · 0 评论 -
数据结构:直接插入排序 & 希尔排序 & 选择排序 & 堆排序 & 冒泡排序 & 快速排序 & 归并排序
1.什么是排序 排序就是将一组杂乱无章的数据按照一定的次序组织起来,此次序可以是升序也可以是降序2.为什么需要进行排序 为了满足一些需求,比如在比较学生的成绩时,我们就需要给所有学生的成绩排一个顺序,这样才方便我们查看学生的名词,所以说排序就是为了给我们生活中的事提供方便。3.数据表 数据表就是待排序数据元素的有限集合4..排序码&amp;amp;amp;amp;amp;主排...原创 2018-06-20 08:51:50 · 2106 阅读 · 0 评论 -
数据结构:对称矩阵
1.什么是矩阵?原创 2018-08-05 07:45:12 · 53734 阅读 · 4 评论 -
数据结构:队列(顺序队列)&链式队列
队列一、什么是队列? 1.是一种特殊的线性表 2.只允许在一端进行插入数据,在另一端进行删除数据二、队头&amp;amp;amp;amp;amp;amp;队尾&amp;amp;amp;amp;amp;amp;入队列&amp;amp;amp;amp;amp;amp;出队列 1.队头:进行删除数据的一端 2.队尾:进行插入数据的一端 3.入队列:在队尾处进行插入数据的操作 4.出队列:在队尾处进行删除数据的原创 2018-08-01 20:34:32 · 4774 阅读 · 0 评论 -
归并排序的图解
归并排序 是建立在归并操作的一种高效的排序方法,该方法采用了分治的思想,比较适用于处理较大规模的数据,但比较消耗内存归并排序的思想: 就是将排序的数分成两半,分别对这两组数据进行排序,然后再将这两个排好序的序列合并成一个有序的数组合并两个有序的序列:代码:#include<stdio.h>#include<stdlib.h>v...原创 2018-03-25 10:03:15 · 1667 阅读 · 0 评论 -
二叉搜索树
二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树 1.若它的左子树不为空,则左子树上所有结点的值都小于根结点的值; 2.若它的右子树不为空,则右子树上所有结点的值都大于根结点的值; 3.它的左右子树也称为二叉搜索树。二搜索树的插入操作 在向二叉树中插入新元素时,必须先检测这个元素是否在树中已经存在,如果搜索成功。则说明该元素已经存在,...原创 2018-03-14 00:18:25 · 260 阅读 · 0 评论 -
单链表的基本算法1---C语言实现
链表原创 2017-11-11 23:40:06 · 970 阅读 · 0 评论 -
自杀环---约瑟夫环(单链表经典面试题)------>C语言实现
单链表原创 2017-11-11 13:04:48 · 1423 阅读 · 0 评论 -
栈应用:括号匹配问题
括号匹配原创 2017-12-12 18:21:50 · 4263 阅读 · 0 评论 -
迷宫
如何走出这个迷宫?原创 2017-12-22 00:06:09 · 788 阅读 · 0 评论 -
二叉树总节点数为N个,它的叶节点数是多少呢?度为2的节点数呢?度为1的节点数呢?有多少个节点有左孩子?有多少个孩子有右孩子?
二叉树的性质原创 2017-12-29 09:53:09 · 16442 阅读 · 1 评论 -
直接插入排序的图解
环境:win10,VS2013 插入排序: 就是一种比较简单直观的排序算法,适用处理数据量比较少或者部分有序的数据今天我们聊聊插入排序对数组中的所有元素排序 排序函数的实现 #include<stdio.h>#include<stdlib.h>void insertToRightPosition(int arr...原创 2018-03-02 09:08:23 · 5480 阅读 · 1 评论 -
选择排序的图解
选择排序 选择排序就是不断地从未排序的元素中选择最大(或者最下)的元素放入已经排好序的元素集合中,直到未排序中仅剩一个元素为止第一步: 第二步: 第三步: 第四步: 第五步: 对数组元素进行降序排序 代码:#include<stdio.h>#include<stdlib.h>void Select_Sort(int ...原创 2018-03-18 01:31:09 · 17232 阅读 · 0 评论 -
冒泡排序之C语言实现与冒泡排序之c++模板实现
冒泡排序 对相邻的两个数进行排序,两两进行比较,选出最大的数,对N个数进行排序的话,需要比较N-1趟,每一趟会选出一个最大的数或者最小的数第一次交换: 第二次交换: 最后一次交换: 这是第一趟排序,经过这趟排序之后,最大的就在最右边了,也就是排好序了,那么接下来的就是从剩下的三个数中选最大的了,规则和第一趟的一样C语言实现对数据进行升序和降序排序使用...原创 2018-03-18 14:03:02 · 862 阅读 · 0 评论 -
数据结构:数组和链表的区别(数组和链表的优缺点 & 数组和链表的适用场景)
数组和链表是两种基本的数据结构,他们在内存存储上的表现不一样,所以也有各自的特点数组一、数组的特点 1.在内存中,数组是一块连续的区域 2.数组需要预留空间 在使用前需要提前申请所占内存的大小,这样不知道需要多大的空间,就预先申请可能会浪费内存空间,即数组空间利用率低 ps:数组的空间在编译阶段就需要进行确定,所以需要提前给出数组空...原创 2018-08-15 10:04:07 · 20288 阅读 · 0 评论