dove1202ly的博客

keep runing

【数据结构】排序算法之堆排序

什么是堆? 如果下面这张图看不懂的话,那就戳这个什么是堆   那我们今天主要来看怎么利用堆的性质来进行堆排序 初始数组: int arr[]={2,5,4,9,3,6,8,7}; ^_^以下介绍升序排序的步骤 第一步:用数组元素创建堆 【代码实现】  #include...

2018-08-19 16:30:08

阅读数 50

评论数 0

【每日一题】输入一个链表,从尾到头打印链表的每一个节点

【在线oj实现】【递归实现】 struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { ...

2018-06-04 22:31:39

阅读数 40

评论数 0

排序算法之非比较排序【计数排序和基数排序】

------------------------------------------------------- 计数排序---------------------------------------------------------------简而言之就是统计元素出现的个数,并将其放在相应的桶中...

2018-05-03 23:15:10

阅读数 27

评论数 0

【数据结构】排序算法之归并排序

【算法思想】归并排序是利用归并的思想实现的排序方法,该算法采用“分而治之”的思想将问题分成一些小的问题然后递归实现,最后合而为之。【图解】【代码实现】----->递归实现void Merge(int* arr, const int left, const int mid, c...

2018-05-03 19:02:54

阅读数 39

评论数 0

并查集disjoin set

在一些应用问题中,需要将n个不同的元素划分为一组不相交的集合,开始时,每个元素自成一个单元素集合,然后按一定规律将归于同一组元素的集合合并。在此过程中要反复用到查询某个元素属于哪个集合的运算。适合于描述这类问题的抽象数据类型的数据结构称之为并查集(union_find set)并查集需要两种数据类...

2018-04-18 22:15:21

阅读数 74

评论数 0

排序算法之快速排序以及优化

顾名思义,就是一种速度特别快的快速排序也叫分区排序,是目前应用最广泛的排序算法,人如其名,就是很快,而且快速排序算法在空间上只使用一个小的辅助栈,其内部循环也很小,另外快排很容易实现,消耗的资源也很小。 【基本思想】 (1)任取待排序元素序列中的某个元素(例如取第一个元素)作为基准 (2)按...

2018-04-14 23:48:16

阅读数 49

评论数 2

三种插入排序算法解析

【前言】我们常见的排序主要分为两类,一类是内部排序,一类是外部排序1.内部排序:数据元素放在内存中的排序2.外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求能在内外村之间移动数据的排序首先我们先来了解一下如何判断一个排序算法的性能好坏?依据是什么?一般而言有三个依据:稳定性、时间复杂度...

2018-04-14 18:18:45

阅读数 310

评论数 0

AVL树的插入以及四种旋转解析

什么是AVL树呢?(概念)一棵AVL树或者是空树,或者是具有以下性质的二叉搜索树:1、它的左右子树都是AVL树2、左子树和右子树高度之差(简称平衡因子)的绝对值不超过1(-1、0、1)3、如果一棵二叉搜索树是高度平衡的,它就是AVL树。4、时间复杂度:如果它有n个结点,其高度可保持在O(lgn),...

2018-03-15 20:24:48

阅读数 70

评论数 0

堆排序的比较器实现

一、堆定义 最小堆:任一结点的关键码均小于等于它的左右孩子的关键码,位于堆顶结点的关键码最小; 最大堆:任一结点的关键码均大于等于它的左右孩子的关键码,位于堆顶结点的关键码最大。  堆存储在下标为0开始计数的数组中,因此在堆中给定下标为i的结点时: 1、如果i=0,结点i是根节点,...

2018-01-30 14:36:16

阅读数 85

评论数 0

判断二叉搜索树是否是完全二叉树

二叉树的简单函数实现http://blog.csdn.net/dove1202ly/article/details/79133089 在前面也提到过什么是满二叉树什么是完全二叉树,在这再重复一遍 1.满二叉树:在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子结点都在同一层 ...

2018-01-23 20:22:16

阅读数 117

评论数 0

二叉树的简单操作(c++实现)

什么是二叉树? 一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树的二叉树组成 二叉树的特点 1.每个结点最多有两棵子树,即二叉树不存在度大于2的结点(分支最大不超过2) 2.二叉树的子树有左右之分...

2018-01-22 20:12:50

阅读数 185

评论数 0

二叉树的定义与基本操作

一、二叉树的定义 把满足以下两个条件的树形结构叫做二叉树 (1)每个节点的度都步大于2; (2)每个节点的孩子节点次序不能任意颠倒。 所以,一个二叉树的每个节点只能含有0、1或者2个孩子,而且每个孩子有左右之分,位于左边的交左孩子,位于右边的叫右孩子。 二、二叉树的基本操作 #include...

2017-12-02 15:40:22

阅读数 3529

评论数 0

栈的应用之后缀表达式

#include #include using namespace std; enum Type { _SYMBOL, //操作符 _NUM, //操作数 ADD, SUB, MUL, DIV, }; struct Cell { Type _type; ...

2017-11-26 23:39:29

阅读数 103

评论数 0

提示
确定要删除当前文章?
取消 删除