摘要:
常用的排序算法的时间复杂度和空间复杂度排序法最差时间分析平均时间复杂度稳定度 空间复杂度 冒泡排序O(n2)O(n2) 稳定 O(1) 快速排序O(n2)O(n*log2n) 不稳定 O(log2n)~O(n) 选择排序O(n2)O(n2) 稳定 O(1) 二叉树排序O(n2)O(n*log2n) 不一顶 O(n) 插入排序O(n2)O(n2) 稳定 O(1) 堆排序O(n*log2n)O(n*log2n) 不稳定 O(1) 希尔排序OO 不稳定 O(1)以上都是常用的基于比较排序方法,时间复杂度的下限是O(n*logn),可以用决策树证明。【1】选择排序,插入排序,冒泡排序三种比较简单,而且 阅读全文
摘要:
堆(Heap)的C++实现1#include<iostream>2usingnamespacestd;34template<classT>5classHeap6{7private:8//hlistpointsatthearraywhichcanbeallocatedby9//theconstructor(inArray==0)orpassedasa10//parameter(inArray==1)11T*hlist;12intinArray;1314//maxnumberallowedandcurrentsizeofheap15intmaxheapsize;16inth 阅读全文
摘要:
(1)static函数内的static变量,内存中分配一次模块内的静态全局变量和函数只能在模块内访问类:静态成员,静态函数:整个类共有,一份复制(2)const修饰只读变量,定义后不能修改;必须初始化;[编译器通常不为普通const分配内存,直接符号表,效率高](3)#define没有类型,简单替换,不能调试,预编译阶段#define MIN(A,B) (A)<(B)?(A):(B) 括号括起来#define LONG_NUM (60*69*6777777)UL (4)数组与指针数组初始化后地址不能改变,指针可以更改;sizeof 可以计算数组容量,但是得不到指针所指内容容量;(5)运算 阅读全文
摘要:
Java不允许程序员选择按值传递还是按引用传递各个参数,只能按值传递,但对于基本类型和对象类型不大一样 基本类型(byte--short--int--long--float--double--boolean--char)的变量总是按值传递。就对象而言,不是将对象本身传递给方法,而是将对象的的引用或者说对象的首地址传递给方法,引用本身是按值传递的-----------也就是说,讲 引用的副本传递给方法(副本就是说明对象此时有两个引用了),通过对象的引用,方法可以直接操作该对象(当操作该对象时才能改变该对象,而操作引用时源对象是没有改变的)。现在说说数组:如果将单个基本类型数组的元素传递... 阅读全文
摘要:
(1)函数默认参数deffoo3(i,L=[]):iflen(L)==0:L.append(0)L[0]+=ireturnL[0]printfoo3(1)printfoo3(2)printfoo3(3)printfoo3(4)上述代码得到的结果是13610因此不要用可变对象作为默认参数值(Don’t use mutable as defaults)1234def function(x, l=[]): # 不要这么干def function(x, l=None): # 更好的一种方式if l is None:l = []tca , tcb , tcc 差异classtc:tca=[]... 阅读全文
摘要:
【模板方法】=============================================== 定义算法框架,具体实现延迟子类中,使得子类可以在不改变算法结构的情况下,重新定义某些步骤。 策略模式都封装算法,它使用组合,模板方法使用继承; 工厂方法是特殊的模板方法; 【策略模式】 定义算法簇,封装起来,可以相处替换,让算法的变化可以独立于客户。 区分应用中变化和不变的部分; 针对接口编程,不针对实现编程; 多用组合,少用继承。 【观察者模式】================================================ 在对... 阅读全文
摘要:
Classification and listDesign patternswere originally grouped into the categories:creational patterns,structural patterns, andbehavioral patterns, and described using the concepts ofdelegation,aggregation, andconsultation. For further background on object-oriented design, seecouplingandcohesion,inhe 阅读全文
摘要:
目录====================================================第一章容器第二章Vector和string第三章关联容器第四章迭代器第五章算法第六章函数第七章在程序中使用STL====================================================第1章容器第1条:慎重选择容器类型。标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一“重型”strin 阅读全文
摘要:
【gawk 是 GNU 的 awk,具有很强的文本处理功能,简洁优美。】第一章 前言 第二章 简介 第三章 读取输入档案 第四章 印出 第五章 Patterns 第六章 算式(Expression)作为Actions的叙述 第七章 Actions里面的控制叙述 第八章 内建函式(Built-in Functions) 第九章 使用者定义的函式 第十章 实例 ======================================= 第一章 前言 awk 是一个程式语言,对于文本处理具有很强的功能。对於文字档里的资料做修改、比对、抽取等的处理,awk 能够以很短的程式 轻易地完成。... 阅读全文
摘要:
【一】 STL容器(1) list (链表 ), 内存不连续,任何位置高校插入删除(2) vector (数组),内存连续,只有在尾部插入时,不用移动元素,随机访问(3) deque(双端队列)两端插入删除效率高,但是中间的操作代价较大,随机访问【注】若要经常在中间插入删除 ,list ;若经常随机访问, vector和deque ,支持下表操作。关联容器(4) map<k, v> 键类型严格弱排序构造函数 : map<k, v> m;map<k, v> m(m2);map<k, v> m(m2.beg, m2.end);【注】map[key] 阅读全文