
C/C++
文章平均质量分 78
Shriven_雯
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++单链表基本操作分析与实现
C++ 单链表基本操作分析与实现 链表 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,链表比较方便插入和删除操作。 创建头节点转载 2017-08-13 16:49:47 · 738 阅读 · 0 评论 -
红黑树
红黑树(一)之 原理和算法详细介绍 概要目录1 红黑树的介绍2 红黑树的应用3 红黑树的时间复杂度和相关证明4 红黑树的基本操作(一) 左旋和右旋5 红黑树的基本操作(二) 添加6 红黑树的基本操作(三) 删除 概述:R-B Tree,又称为“红黑树”。本文参考了《算法导论》中红黑树相关知识,加之自己的理解,然后以图文的形式对红黑树进行说明。本文的主...转载 2018-06-12 19:07:22 · 292 阅读 · 0 评论 -
Microsoft Visual Studio 2015中ucrtbased.dll丢失
问题描述使用Microsoft Visual Studio2015编写程序运行出错,提示“无法启动此程序,因为计算机中丢失ucrtbased.dll。尝试重新安装该程序以解决此问题”。解决办法一:选择静态编译(临时性方法)第一步,在“解决方案资源管理器”中的项目上右击,选择属性。第二步:找到运行库,右侧下拉列表内,选择“多线程调试(/MTd)”,然后点击确定按钮。程序重新编译后,就可以运行了。解决...原创 2018-03-21 15:56:05 · 6002 阅读 · 1 评论 -
简单排序
图解排序算法(一)之3种简单排序(选择,冒泡,直接插入) 排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现。但是了解这些精妙的思想对我们还是大有裨益的。本文简单温习下最基础的三类算法:选择,冒泡,插入。 先定义个交换数组元素的函数,供排序时调用 /** * 交换转载 2018-01-20 19:56:09 · 187 阅读 · 0 评论 -
快速排序
图解排序算法(五)之快速排序——三数取中法 快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列 基本步骤 三数取中 在快排的过程中,每一次我转载 2018-01-19 21:25:19 · 185 阅读 · 0 评论 -
归并排序
图解排序算法(四)之归并排序 基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 分而治之 可以看到这种结构很像一棵完全二叉转载 2018-01-19 21:22:08 · 199 阅读 · 0 评论 -
堆排序
图解排序算法(三)之堆排序 预备知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如转载 2018-01-19 18:32:31 · 173 阅读 · 0 评论 -
希尔排序
图解排序算法(二)之希尔排序 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。本文会以图解的方式详细介绍希尔排序的基本思想及其代码实现。基本思想 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少转载 2018-01-19 14:52:44 · 160 阅读 · 0 评论 -
图论算法
图的定义 背景知识 看到这篇博客相信一开始映入读者眼帘的就是下面这幅图了,这就是传说中的七桥问题(哥尼斯堡桥问题)。在哥尼斯堡,普雷格尔河环绕着奈佛夫岛(图中的A岛)。这条河将陆地分成了下面4个区域,该处还有着7座连接这些陆地的桥梁。 问题是如何从某地出发,依次沿着各个桥,必须经过每座桥且每座桥只能经过1次,最终回到原地。 不知道这个问题且好奇的童鞋现在肯定转载 2018-01-26 15:08:20 · 781 阅读 · 0 评论 -
不相交集(The Disjoint Set ADT)
0)引论 不相交集是解决等价问题的一种有效的数据结构,之所以称之为有效是因为,这个数据结构简单(几行代码,一个简单数组就可以搞定),快速(每个操作基本上可以在常数平均时间内搞定)。 首先我们要明白什么叫做等价关系,而在这个之前要先有一个关系(relation)的定义 Relation:定义在数据集S上的关系R是指,对于属于数据集S中的每一对元素(a,b),a R b要么是真要么是转载 2018-01-22 16:16:44 · 530 阅读 · 0 评论 -
B-树学习笔记
B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m/2个孩子。 根结点至少有2个孩子(如果B树只有一个结点除外)。 所有叶结点在同一层,B树的叶结点可以看成一种外部节点,不包含任何信息。 有k个关键字(关键字按递增次序排列)的非叶结点恰好有k+1个孩子。 看到上面的定义是不是感到十分熟悉,哈哈转载 2018-01-12 16:54:55 · 383 阅读 · 0 评论 -
桶式排序
假设现在有一组小于M的正整数 a1、 a2 ,…… ,an ,对它们排序可以采用以下的思路:使用一个大小为M的数组buckets,这个数组的每一个单元称为一个个的bucket,桶,初始化全部为0。扫描数组a,当扫描到ai的时候,buckets[ai] 加1。这样当a扫描完之后,扫描buckets,打印非零单元的下标,它的值是几就打印几次。打印出来的值实际上就是排好序之后的数组a了。我们可以依次把它转载 2017-12-26 14:19:19 · 261 阅读 · 0 评论 -
typedef用法总结
在C还是C++代码中,typedef都使用的很多,在C代码中尤其是多。typedef与#define有些相似,其实是不同的,特别是在一些复杂的用法上 基本定义: typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个转载 2017-08-14 20:33:27 · 278 阅读 · 0 评论 -
C语言 字符串和C++ string对象的相互转化
在C语言中,字符串以字符数组或指针的形式存储。而C++中则直接引入string类(注意"s"是小写!)。C风格的字符串很容易转化成C++风格的字符串,反过来却可能引起语法错误。 一、C语言的字符串转化为C++的string对象 C++中,string 类能够自动将C 风格的字符串转换成string 对象 #include #include using namespace s原创 2017-08-13 20:27:38 · 1789 阅读 · 0 评论 -
extern和extern "C"
函数的声明extern关键字是可有可无的,因为函数本身不加修饰的话就是extern的。 下面分变量和函数来说明: (1) 变量 extern int a; //声明一个全局变量 int a; //定义一个全局变量 extern int a = 0;//定义全局变量并给初值 int a = 0; //定义全局变量并给初值 上面的四个只有第一个extern int a才是声明,其...转载 2019-07-07 16:55:27 · 428 阅读 · 0 评论