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