自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

转载 内核堆栈和用户堆栈 小结

转载至:【http://www.cnblogs.com/longdouhzt/archive/2012/10/13/2722969.html】每一个进程(包括普通进程和内核进程)的地址空间都分为用户地址空间和内核地址空间两部分,在32位的x86机器上,用户地址空间的范围是0~3G,内核 地址空间的范围是3G~4G.对于不同的进程,其用户地址空间会随着进程不同而不同,但所有进程的...

2016-05-03 20:49:00 150

转载 TCP深入详解

TCP三次握手、四次挥手时序图:#TCP协议状态机1.TCP建立连接时的初始化序列号X、Y可以是写死固定的吗? 如果初始化序列号(缩写为ISN:Inital Sequence Number)可以固定,我们来看看会出现什么问题。假设ISN固定是1,Client和Server建立好一条TCP连接后,Client连续给Server发了10个包,这10个包不知怎么被链...

2016-04-22 17:21:00 163

转载 mongodb入门很简单(3)

##简单的mongodb入门命令##1.show dbs;//查看当前数据库2.use databaseName;//选库3.show tables/collections;//查看数据库中有哪些表4.db.help();//查看一些对database的操作命令5.m...

2016-04-18 15:58:00 137

转载 mongodb入门很简单(2)

mongodb的安装1.下载mongodb: www.mongodb.org下载最新的stable版:我下载的版本是3.2.52.解压文件3.不用编译;本身就是编译后的二进制可执行文件打开我们下载解压好的bin目录如下:bin文件中的内容;bsondump: 导出bson结构mongo: 客户端(相当于mysql.exe)mongod...

2016-04-17 21:10:00 80

转载 mongodb入门很简单(1)

mongodb简介:如前边介绍的两个键-值数据库:memcached和redis属于(key/value)数据库;而mongodb是文档数据库;存储的是文档(Bson->json的二进制);mongodb文档数据库的特点是:内部执行引擎为JS解释器,把文档存储成bson结构,在查询时转换成js对象;并以我们熟悉的js语法来操作;mongodb和mysql等...

2016-04-17 17:50:00 67

转载 求数组中出现次数超过一半的数字

题目描述:数组中有一个数字的个数超过数组长度的一半,请找出这个数字。例如一个长度为9的数组{1, 2, 3, 2, 2, 2, 5, 4, 2}中数字2出现了两次,所以输出2.算法描述:  解决这道题有几种方法。  (1)对数组进行排序,然后选取数组的中位数即可,但是我们知道排序最好的最好的时间复杂度就是O(nlgn)。  (2)下面两种方法是在O(n)的时间内实现...

2016-04-15 14:28:00 103

转载 二叉树中的和,求路径

题目描述:已知二叉树和一个确定的值,求二叉树中的路径上节点的和满足给定的值,输出这些路径。题目和算法解析:我们知道二叉树中的路径是指从根节点到叶子节点的。一定是从根节点出发的。所以我们需要有一种数据结构能够记录我们走过的路径。想到了栈。算法需要从根节点开始采用  前序遍历的思想逐个去校验是否符合条件。算法实现; 1 #include<iostream&g...

2016-04-11 20:07:00 118

转载 判断序列是否是二叉搜索树的后序遍历序列

题目要求:判断序列是否是二叉搜索树的后序遍历序列,给定一个序列,判断这个序列是否是二叉搜索树的一个正确的后序遍历序列。算法思想:  我们知道,后续遍历根节点最后遍历,所以我们需要首先找到根节点。第二部就是根据二叉搜索树的性质了,二叉搜索树的左子树的值全都比根节点小,右子树的值全都比根节点的值大,所以我们需要运用递归,逐个去检查左子树和右子树是否符合这个规律即可。算法实现...

2016-04-10 20:49:00 108

转载 层序遍历二叉树

题目描述:创建一棵二叉树,然后层序遍历输出节点算法实现: 1 #include<iostream> 2 #include<deque> 3 using namespace std; 4 5 typedef struct BiTreeNode{ 6 int data; 7 struct BiTreeNode *l...

2016-04-10 18:07:00 124

转载 栈的压入与弹出

题目描述:输入两个序列,一个为压入的序列,一个为弹出的序列。检查这两个序列是否符合栈的压入和弹出的性质。算法实现: 1 #include<iostream> 2 #include<stack> 3 using namespace std; 4 5 bool IsPopOrder(const int *Push, const int *...

2016-04-10 16:28:00 76

转载 创建一棵二叉树并输出节点

源代码: 1 #include<iostream> 2 using namespace std; 3 4 typedef struct BiTreeNode{ 5 int data; 6 struct BiTreeNode *left; 7 struct BiTreeNode *right; 8 }BiTreeNo...

2016-04-04 21:09:00 625

转载 合并两个排序的链表

题目描述:  输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。算法思想:  这个题目的思想是通过两个指针分别指向两个链表,递归比较两个链表的值得大小,然后赋值给新建的头结点。直到结束。这里需要注意的就是,我们需要检查两个传进来的链表是否为空;算法实现: 1 #include<iostream> 2 #in...

2016-03-29 15:43:00 52

转载 反转链表,并输出翻转后的链表

题目描述:  输入一个链表,反转链表后,输出链表的所有元素。算法思想:  其实这个题目并不是很难,我们需要注意的就是在一些边界问题的处理上。使它的鲁棒性更好。我们只需记录三个指针,来改变三个指针的值去交换即可。算法实现: 1 #include<iostream> 2 #include<stdlib.h> 3 using nam...

2016-03-29 14:49:00 479

转载 链表中倒数第K个节点

题目描述:  输入一个链表,输出该链表中倒数第k个结点。算法思想:  这种题型应该见过的,一般只要的涉及倒数。我们就需要设置两个指针了。这道题我们需要设置两个指针,先让一个指针向前移动k-1个位置(保持两个指针之间的距离为k-1),然后让第二个指针指向头结点,之后让两个指针同时向后移动,直到前边的指针指向NULL ,返回后边的指针即可。这样我们就扫描一遍的情况下找到了结果。...

2016-03-28 20:56:00 51

转载 调整数组顺序时奇数位于偶数前边

题目描述:  输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。算法描述:  我们需要两个指针,其中一个指向开始(begin),另一个指向最后(end),begin指针只向后移动,end只向前移动。这样我们的思想是:begin每次只找偶数就停止,en...

2016-03-28 19:39:00 63

转载 在O(1)时间删除链表节点

  按照以往的习惯,这种题我们需要遍历整个链表,找到需要删除节点的前一个节点,这样我们就可以操作删除的方法了,这种方法需要O(n)的时间复杂度,但这里要求我们在O(1)的时间下完成。我们只能想其他的方法。  算法思想:其实我们也不需要知道删除节点前一个节点。我们的做法是将删除节点的后边一个节点的值赋给要删除的节点(即把要删除节点的值覆盖),然后将删除节点后边的节点删除(delete)...

2016-03-28 17:49:00 82

转载 打印1到最大的n位数

转载:http://blog.csdn.net/jxh_123/article/details/38364923?utm_source=tuicool&utm_medium=referral题目描述:  输入数字n,按顺序打印出从1最大的n位十进制数。例如输入3,则打印出1,2,3一直到最大的3位数即999.这里需要注意,本题是核心考察的大数问题,就是怎么存一个很大的...

2016-03-28 16:38:00 54

转载 数值的整数次方

题目描述:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。算法注意事项:算法并不是很难,但这里要注意对输入的要求进行检查,例如指数是0的情况,底数是0的情况,底数是-1的情况等。所以这里还是要注意很多问题的。下面是代码,从代码中来学习: 1 #include<iostream> 2 u...

2016-03-27 19:01:00 81

转载 位运算

题目描述:  输入两个整数m, n;计算需要改变你的二进制表示的多少位才能得到另一个数。例如13二进制为1101, 10的二进制为1010.我们需要改变3位才可以。算法实现:#include<iostream>using namespace std;int counter(int n, int m){ int p = m ^ n;...

2016-03-26 16:09:00 52

转载 斐波那契数列 详解

下面来简单说一下斐波那契数列的有效率的解法:我们刚刚接触递归时肯定学习了斐波那契数列这样一个经典的例子,但这里的递归算法有一些效率问题。因为如果我们求fib(100)时。我们会发现产生了许多的重复运算。这些不但消耗着计算时间和资源容易产生栈溢出。这是非常危险的。所以下面介绍一个迭代的算法:(算法不难)算法实现: 1 #include<iostream>...

2016-03-26 15:19:00 150

转载 旋转数组的最小数字

题目描述:  把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。算法描述:  如果从头到尾进行扫描的话,时间复杂度为O(n),但这种方法过于简单,我们需要找出更加快捷的方法来解决这个问题。于是想到了二分查找。我们可以定...

2016-03-26 14:46:00 60

转载 经典排序之 计数排序

今天来简单说一下计数排序:当要实现一个排序算法要求时间复杂度是O(n),允许使用常量大小的辅助空间,并且数据的大小在一个可控的范围内,就可以使用计数排序了,也就是辅助数组的大小记录数据的个数,然后输出即可;算法实现: 1 #include<iostream> 2 #include<stdlib.h> 3 using namespace...

2016-03-26 10:07:00 61

转载 经典算法 总结

总结一下算法的各个方面:经典算法之 快速排序:http://www.cnblogs.com/dormant/p/5317000.html经典算法之 简单选择排序:http://www.cnblogs.com/dormant/p/5317140.html经典算法之 冒泡排序:http://www.cnblogs.com/dormant/p/5317293.html经典...

2016-03-25 21:52:00 74

转载 经典排序之 二路归并排序

今天最后研究一下二路归并排序算法思想:利用递归,将原始序列不断两两分块,知道每块剩下一个元素,这个元素肯定是有序的。然后利用递归的原理合并即可;二路归并排序的最好,最坏,和平均时间复杂度为O(nlgn);是一种稳定的排序算法实现: 1 #include<iostream> 2 using namespace std; 3 4 void M...

2016-03-25 21:17:00 320

转载 经典排序之 堆排序

下面来说一下堆排序,这个有点复杂;堆是一种数据结构,可以把它看成一棵完全二叉树,这棵完全二叉树满足任何一个非叶子节点的值都不大于或不小于其左右孩子节点的值,分别叫做大顶堆和小顶堆。算法思想:  堆排序的算法分为两步:建立堆和排序; 1)建堆:    将序列调整为大顶堆,每一次都是父节点和子节点进行比较然后进行调整;  2)排序:    在已经建好的大顶...

2016-03-25 16:56:00 77

转载 经典排序之 插入排序

今天介绍另外几种排序算法,这里讲一下 简单插入排序:算法思想:插入排序整体的思想是对有序的数组进行排序,例如拿到一个数组,它的第一个数据肯定是有序的,从第二个数据开始开始和前边的数据 比较,当遇到比它大的数据后就向后移动数据的位置,再次向前比较,直到前边的数据比它小为止,这时就交换两个数据的位置,这就是一次排序的实现,每次排序确定一个数字的最终位置。插入排序适合少量数据的...

2016-03-25 13:25:00 115

转载 经典排序之 冒泡排序

冒泡排序和选择排序一样是我们接触相对早的一种排序算法。下面简单讲解一下冒泡排序的思想:算法思想:  冒泡排序,顾名思义,排序的过程就像气泡在水里上升一样。就是对数组进行不断地扫描,每当遇到比标记的数据大的元素就交换两个数据。这样扫描一遍之后就会产生一个最小或最大的元素位于最终的位置上。之后进行第二遍扫描,第三遍......最终完成。  冒泡排序是一种稳定的算法,他的最好时间复...

2016-03-24 21:33:00 53

转载 经典排序之 选择排序

现在简单来讲一下选择排序的思想:我们接触选择排序的时间很长了,也是我们编程时需要最先接触的程序。他的思想确实较简单。算法思想:  选择排序需要针对数组从头到尾进行扫描,其实就是记录下扫描一遍后整个数组的最小元素和最小元素的位置,然后和第一个元素进行交换,这样经过一遍排序我们就可以确定一个元素的最终位置;然后从第二个数据开始再次循环扫描交换,直到最后;在这里交换时有一个优化的过...

2016-03-24 21:01:00 49

转载 经典排序之 快速排序

想利用这一两天复习一下几个经典的排序算法,今天先来看一下快速排序:  我们知道快速排序的思想是:先找到一个枢轴,然后进行分块,将其中元素比枢轴小的元素放到枢轴左边,将比他大的放到他的右边,这样我们就完成了一遍基本排序。我们确定了一个数字在排好序的位置;之后利用递归再将枢轴左边的数据分块,将右边的数据分块即可;算法实现: 1 #include<iostre...

2016-03-24 20:20:00 48

转载 两个队列实现一个栈

题目描述:  利用两个队列实现一个栈,实现先进后出的功能。算法实现: 1 #include<iostream> 2 #include<queue> 3 using namespace std; 4 5 queue<int> q1; 6 queue<int> q2; 7 8 void appen...

2016-03-24 20:05:00 53

转载 用两个栈实现队列

题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。算法实现: 1 #include<iostream> 2 #include<stack> 3 #include<string> 4 5 using namespace std; 6 stack<int&g...

2016-03-23 17:23:00 40

转载 重建二叉树

题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列,如果如果题目中所给的前序和中序遍历序列不能构成一棵二叉树,则输出”No”。算法: 1 #incl...

2016-03-22 21:43:00 49

转载 从尾到头打印链表

题目描述:输入一个链表,从尾到头打印链表每个节点的值。算法: 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<malloc.h> 4 5 typedef struct ListNode{ 6 int data; 7 struct ListNod...

2016-03-21 18:12:00 39

转载 替换空格

题目描述:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。此类型的算法可以适用于很多方面,像数组的合并。思想是从数组的后边向前合并,而不是从前向后。 1 #include<stdio.h> 2 #include<string.h> 3 ...

2016-03-21 10:52:00 41

转载 二维数组的查找

题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解法: 1 #include<stdio.h> 2 /*    从矩阵的右上角开始寻找 */ 3 int Find(int *matrix, int rows, int ...

2016-03-20 20:01:00 32

转载 删除给定字符的算法

面试中,面试官问我现场写的一个算法题目:给定一个字符串和一个字符,删除字符串中包含和此字符相同的字符。算法1: 1 #include<stdio.h> 2 3 void delChar(char * str, char p){ 4 int i = 0; 5 int j = 0; 6 while(str[j] != NU...

2016-03-20 17:59:00 74

转载 算法题:数组合并问题的解法

描述:有两个有序数组A,B,内存A在A的末尾有足够多的空间容纳B,实现函数:把B中的所有数字插入到A中,并且保持A中的所有数字是排序的。解法: 1 #include<stdio.h> 2 #include<string.h> 3 4 void newArray( char stringA[], char stringB[], i...

2016-03-09 21:17:00 254

转载 Effiective C++ (一)

最近在看Effective C++ ,同时将总结一下里边的重要知识点:########################## module 1 ########################## 让自己习惯C++1.条款01:视C++为一个语...

2016-03-08 14:55:00 157

转载 Nginx初始化过程总结

对于Nginx这样一个模块化的服务器,看代码是最好的理解方式了。再此通过读main() 函数来简述一下Nginx的初始化过程:这就是整个main函数的执行过程;转载于:https://www.cnblogs.com/dormant/p/5232621.html...

2016-03-01 21:38:00 142

转载 C++ 多态详解

前几天在网上看到这样的一个问题:多态现在一般的用法,就是拿一个父类的指针去调用子类中被重写的方法。但我搞不懂为什么要那么做,我们直接在子类中写一个同名的成员函数,从而隐藏父类的函数不就行了么?然后有人这样回答:将父类比喻为电脑的外设接口,子类比喻为外设,现在我有移动硬盘、U盘以及MP3,它们3个都是可以作为存储但是也各不相同。如果我在写驱动的时候,我用个父类表示外设接口,然后...

2016-02-27 17:21:00 1822

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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