自定义博客皮肤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 274

转载 快速排序

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

2016-04-29 15:43:51 138

转载 选择排序和堆排序

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

2016-04-15 16:18:10 262

转载 插入排序

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

2016-04-15 10:41:46 212

转载 冒泡算法

void BubbleSort(elemtype x[],int n)   //时间复杂度为0(n*n); { int i,j; elemtype temp; for(i=1;i for(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 214

转载 C++虚函数表剖析

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

2016-07-04 10:00:03 321

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

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

2016-07-01 14:58:05 379

转载 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 210

转载 操作系统知识点

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

2016-05-24 15:39:58 400

转载 平衡二叉树 之 红黑树

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

2016-05-05 14:41:08 224

转载 平衡二叉树 之 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 161

转载 二叉查找树BST

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

2016-05-05 14:38:43 247

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

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

2016-05-04 16:07:47 309

转载 把数组排成最小的数

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

2016-05-03 10:11:07 168

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

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

2016-04-28 09:27:42 535

转载 字符串的全排列

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

2016-04-27 15:07:27 206

转载 编程题

void foobar(int a, int *b, int **c) {     int *p = &a;     *p = 101;     *c = b;     b = p; }   int main() {     int a = 1;     int b = 2

2016-03-15 20:24:13 242

转载 概念题

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 247

转载 百钱买百鸡问题

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

2016-03-14 10:01:30 537

转载 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 291

转载 重建二叉树

给定一个前序和中序变量的结果,写一个算法重建这棵树:如: 前序: 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 198

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

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

2016-02-24 10:00:14 777

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

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

2016-02-23 14:52:50 229

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

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

2016-02-23 11:24:05 4625

空空如也

空空如也

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

TA关注的人

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