自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 归并排序

归并排序是利用"归并"技术来进行排序。归并是指将若干个已排序的子文件合并成一个有序的文件。常见的归并排序有两路归并排序(Merge Sort),多相归并排序(Polyphase Merge Sort),Strand排序(Strand Sort)。下面介绍第一种:(一)两路归并排序最差时间复杂度:O(nlogn)平均时间复杂度:O(nlogn)最差空间复杂度:O(n)稳定

2016-05-03 19:57:01 285

转载 快速排序

高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6  1  2 7  9  3  4  5 10  8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列

2016-04-29 15:43:51 143

转载 选择排序和堆排序

选择排序算法就是每一趟从待排序的记录中选出关键字最小(最大)的记录,顺序放在已排好序的子文件的最后(最前),直到全部记录排序完毕。常见的选择排序有直接选择排序(Selection Sort),堆排序(Heap Sort),平滑排序(Smooth Sort),笛卡尔树排序(Cartesian Sort),锦标赛排序(Tournament Sort),循环排序(Cycle)。下面介绍前两种:(

2016-04-15 16:18:10 274

转载 插入排序

插入排序的基本思想是每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。常见的插入排序有插入排序(Insertion Sort),希尔排序(Shell Sort),二叉查找树排序(Tree Sort),图书馆排序(Library Sort),Patience排序(Patience Sort)。下面介绍前两种:(一)直接插入排序最

2016-04-15 10:41:46 219

转载 冒泡算法

void BubbleSort(elemtype x[],int n)   //时间复杂度为0(n*n);{int i,j;elemtype temp;for(i=1;ifor(j=0;j{if(x[j].key>x[j+1].key){temp=x[j];x[j]=x[j+1];x[j+1]=temp;}}}//补充一个改进的冒泡算法:

2016-07-22 15:55:58 241

转载 C++虚函数表剖析

关键词:虚函数,虚表,虚表指针,动态绑定,多态一、概述为了实现C++的多态,C++使用了一种动态绑定的技术。这个技术的核心是虚函数表(下文简称虚表)。本文介绍虚函数表是如何实现动态绑定的。二、类的虚表每个包含了虚函数的类都包含一个虚表。 我们知道,当一个类(A)继承另一个类(B)时,类A会继承类B的函数的调用权。所以如果一个基类包含了虚函数,那么其继承类也可调用

2016-07-04 10:00:03 338

转载 string的构造函数和拷贝构造函数

在C++中,对于一个空的类,编译器一般默认它会有4个成员函数:构造函数,析构函数,复制构造函数和赋值函数。对于初学者而言,构造函数一定是要知道的:它的功能就是在创建一个新的对象的时候给数据成员赋初值,也就是给对象做初始化。析构函数则是用来释放一个对象,在对象删除之前用它来做一些内存释放等的清理工作,与构造函数的功能相反。      关于类的构造函数和析构函数的典型应用:在构造函数中用new来为

2016-07-01 14:58:05 386

转载 typedef常见用法

typedef常见用法1.常规变量类型定义例如:typedef unsigned char uchar描述:uchar等价于unsigned char类型定义 uchar c声明等于unsigned char c声明2.数组类型定义例如: typedef int array[2];描述: array等价于 int [2]定义; array a声明等价于int a

2016-06-24 14:35:29 216

转载 操作系统知识点

1. 进程的有哪几种状态,状态转换图,及导致转换的事件。状态:1)就绪状态  进程已获得除处理机外的所需资源,等待分配处理机资源,只要分配到CPU就可执行。在某一时刻,可能有若干个进程处于该状态。   2)运行状态   占用处理机资源运行,处于此状态的进程的数目小于等于CPU的数目。   3)阻塞状态  由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前

2016-05-24 15:39:58 406

转载 平衡二叉树 之 红黑树

1. 红黑树的特性Red-Black Tree (  RBT)也是一种自平衡二叉树,其统计性能要好于 AVL树 。它是在1972年由 鲁道夫·贝尔 发明的,它现代的名字是在 Leo J. Guibas 和 Robert Sedgewick 于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的。[参考Wiki]一般的,红黑树同时

2016-05-05 14:41:08 237

转载 平衡二叉树 之 AVL树

AVL树是最先发明的自平衡二叉查找树。AVL树以其发明者前苏联学者 G.M. Adelson-Velsky 和 E.M. Landis 名字而命名,他们在1962年的论文《An algorithm for the organization of information》中发表了它。[参考WiKI]AVL树中,一个非常重要的概念为平衡因子(Balance factor),对于任意节点 x ,

2016-05-05 14:40:40 173

转载 二叉查找树BST

给定一个关键字 key 和 一个集合 Collection, 确定这个Collection是否包含给定的key,如果包含,找出该key对应的位置,这个过程为 查找 (Search)。如果在 查找 过程中, Collection的结构始终不发生变化,那么称之为静态查找; 反之,需要频繁的向这个集合中添加、删除元素,从这样的集合中进行查找则称之为动态查找。动态查找技术一般用树来存储查找

2016-05-05 14:38:43 256

转载 数组中的逆序对(归并的思想)

解题思路看到这样的题目,最简单的想法就是遍历每一个元素,让其与后面的元素对比,如果大于则count++,但是这样的时间复杂度是o(n2)。这题有更好的解决方法,时间复杂度只需要o(nlogn)。其实这道题目的思路跟归并排序差不多,求逆序对的过程就是一个求归并排序的过程,在求出逆序对以后,原数组变得有序,是通过归并排序得到的。(1)总体的意思就是将数组分成两段,首先求段内的逆序对数量,比如下面两段代

2016-05-04 16:07:47 316

转载 把数组排成最小的数

问题描述:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32,  321},则输出这两个能排成的最小数字32132。请给出解决问题的算法,并证明该算法。#include   #include   #include   #include   using namespace std;    bool compare

2016-05-03 10:11:07 178

转载 字符串初始化指针和初始化数组区别

定义指针时,编译器并不为指针所指向的对象分配空间,它只是分配指针本身的空间,除非在定义时同时赋给指针一个字符串常量进行初始化。在ANSI C中,初始化指针时所创建的字符串常量被定义为只读。如果试图通过指针修改字符串的值,程序就会出现未定义的行为。在有些编译器中,字符串常量被存放在只允许读取的文本段中,以防止它修改。————以上摘自《C专家编程》P87与指针相反,由字符串常量

2016-04-28 09:27:42 546

转载 字符串的全排列

问题:输入一字符串(要求不存在重复字符),打印出该字符串中字符中字符的所有排列。例如:输入"abc",输出结果为abc, acb, bac, bca, cab和cba。方法一:比较笨,用一个整型数组,记录当前排列的下标,然后输出下标对应的字符串,空间代价为O(n) 代码:[cpp] view plain copy print?//参数:字符串,记录当前全

2016-04-27 15:07:27 218

转载 编程题

voidfoobar(inta, int*b, int**c){    int*p = &a;    *p = 101;    *c = b;    b = p;} intmain(){    inta = 1;    intb = 2

2016-03-15 20:24:13 253

转载 概念题

32位平台  char         1个字节8位 short        2个字节16位 int             4个字节32位 long         4个字节32位long long    8个字节64位  指针         4个字节32位  64位平台  char     1个字节 short     2个字节 int      

2016-03-14 20:02:58 256

转载 百钱买百鸡问题

题目描述公元前五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?详细描述:接口说明原型:int GetResult(vector &list)输入参数:        无输出参数(指针指向的内存区域保证有效):    list  

2016-03-14 10:01:30 548

转载 strcpy拷贝越界问题

《strcpy拷贝越界问题》一. 程序一#include  #include  void main()  {   char s[]="123456789";   char d[]="123";   strcpy(d,s);   printf("d=%s,\ns=%s",d,s);  } 执行结果:解释:首先要解释一下,char s[]="12345678

2016-02-26 14:08:26 303

转载 重建二叉树

给定一个前序和中序变量的结果,写一个算法重建这棵树:如:前序: a b d c e f中序:  d b a e c f前序遍历的每一个节点,都是当前子树的根节点,同时,以对应的节点为边界,就会把前序遍历的结果分为左子树和右子树。a是前序中第一个节点,以a为中界,把中序的结果分成:左:db右:ecf对于db,由于在前序中b在d前面,所以,b

2016-02-25 14:39:37 205

转载 如下为类型CMyString的声明,请为该类型添加赋值运算符函数。

面试题1:赋值运算符函数复制代码题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。class CMyString{public:CMyString(char *pData=NULL);//构造函数CMyString(const CMyString& str);//拷贝构造函数~CMyString();//析构函数private:

2016-02-24 10:00:14 801

转载 查找输入整数二进制中1的个数

普通法我总是习惯叫普通法,因为我实在找不到一个合适的名字来描述它,其实就是最简单的方法,有点程序基础的人都能想得到,那就是移位+计数,很简单,不多说了,直接上代码,这种方法的运算次数与输入n最高位1的位置有关,最多循环32次。int BitCount(unsigned int n){ unsigned int c =0 ; // 计数器 whi

2016-02-23 14:52:50 240

转载 将m个相同的苹果放进n个相同的盘子中,盘子允许空,有多少种方法

 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。Input第一行是测试数据的数目t(0 Output对输入的每组数据M和N,用一行输出相应的K。Sample Input17 3Sample Output8类型:动态规划问题:将m个苹果放进n个盘子中,盘子允许空

2016-02-23 11:24:05 4672

空空如也

空空如也

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

TA关注的人

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