迟到的第二周总结
2010-09-06 23:59
302 查看
上一周自学:
数据结构:本来打算是排序,没想到顺便把查找也看完了
排序分为
插入排序:直接插入,折半插入,shell
每次选择待排序的记录序列的第一个记录,按照排序码的大小将其插入到已排序的记录序列中的适当位置,直到所有记录全部排序完毕;
选择排序:直接选择,树形选择
每次从待排序的记录中选出排序码最小的记录,再在剩下的记录中选出最小的记录,重复这个选择过程,直到完成全部排序;
交换排序:起泡,快速
每次将待排序文件中的两个记录的排序码进行比较,如果不满足排序要求,则交换这两个记录在文件中的顺序,直到文件中任意两个记录之间都满足排序要求为止;
分配排序:基数排序
归并排序:
将已经排序的子文件进行合并,得到完全排序的文件;
外部排序:2路合并,多路替代选择合并,最佳合并
按平均时间将排序分为四类:
(1)平方阶(O(n2))排序
一般称为简单排序,例如直接插入、直接选择和冒泡排序;
(2)线性对数阶(O(nlgn))排序
如快速、堆和归并排序;
(3)O(n1+£)阶排序
£是介于0和1之间的常数,即0<£<1,如希尔排序;
(4)线性阶(O(n))排序
如桶、箱和基数排序。
各种排序方法比较
简单排序中直接插入最好,快速排序最快,当文件为正序时,直接插入和冒泡均最佳
影响排序效果的因素
因为不同的排序方法适应不同的应用环境和要求,所以选择合适的排序方法应综合考虑下列因素:
①待排序的记录数目n;
②记录的大小(规模);
③关键字的结构及其初始状态;
④对稳定性的要求;
⑤语言工具的条件;
⑥存储结构;
⑦时间和辅助空间复杂度等。
不同条件下,排序方法的选择
(1)若n较小(如n≤50),可采用直接插入或直接选择排序。
当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。
(2)若文件初始状态基本有序(指正序),则应选用直接插人、冒泡或随机的快速排序为宜;
(3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序
查找:
顺序查找:
将每个结点的关键码和给定的待查的关键码值进行比较,直到找出相等的结点或者找遍所有结点;
折半查找:
首先找到表的中间结点,将其关键码与给定的要找的值进行比较,若相等,则查找成功;若当前结点的关键码大于要找的值,则继续在表的前半部分进行折半查找,否则继续在表的后半部分进行折半查找;
分块查找:
散列查找:(hash)
C++:
第十三章,类继承
多态公有继承:
class A { fun()}
class B:public A {fun()}
A a; B b;
A &ab = b;
ab.fun(); //A::fun
class A { virtual fun()}
class B:public A {fun()}
A a; B b;
A &ab = b;
ab.fun(); //B::fun 靠,还好今天讨论了一下,不然完全相反了
编译器对非虚拟方法使用静态联编(static binding , or early binding)
对虚拟方法使用动态联编(dynamic binding, or late binding)
构造函数不能为虚函数,析构函数可以为虚函数,当类作为基类时,析构函数应该是虚拟函数;友元不能是虚拟函数;
重新定义继承的方法并不是重载,如果在派生类中重新定义函数,将不是使用相同的函数特征标覆基类声明,而是隐藏同名的基类方法,不管参数特征标如何;1.如果重新定义继承的方法,应确保与原来的原型完全相同,但如果返回类型是基类引用或指针,则可以修改为指向派生类的引用或指针;2.如果基类声明被重载了,则应在派生类中重新定义所有的基类版本;
windows API:
进程,线程,纤程:
纤程也是程序执行单元,与线程类似.所不同的是纤程必须要应用程序自行调度,而线程是由系统进行调度的.纤程运行于线程的上下文中,一个线程可以调度很多纤程;
线程同步:
http://blog.csdn.net/asmemgsd/archive/2010/09/13/5881962.aspx
数据结构:本来打算是排序,没想到顺便把查找也看完了
排序分为
插入排序:直接插入,折半插入,shell
每次选择待排序的记录序列的第一个记录,按照排序码的大小将其插入到已排序的记录序列中的适当位置,直到所有记录全部排序完毕;
选择排序:直接选择,树形选择
每次从待排序的记录中选出排序码最小的记录,再在剩下的记录中选出最小的记录,重复这个选择过程,直到完成全部排序;
交换排序:起泡,快速
每次将待排序文件中的两个记录的排序码进行比较,如果不满足排序要求,则交换这两个记录在文件中的顺序,直到文件中任意两个记录之间都满足排序要求为止;
分配排序:基数排序
归并排序:
将已经排序的子文件进行合并,得到完全排序的文件;
外部排序:2路合并,多路替代选择合并,最佳合并
按平均时间将排序分为四类:
(1)平方阶(O(n2))排序
一般称为简单排序,例如直接插入、直接选择和冒泡排序;
(2)线性对数阶(O(nlgn))排序
如快速、堆和归并排序;
(3)O(n1+£)阶排序
£是介于0和1之间的常数,即0<£<1,如希尔排序;
(4)线性阶(O(n))排序
如桶、箱和基数排序。
各种排序方法比较
简单排序中直接插入最好,快速排序最快,当文件为正序时,直接插入和冒泡均最佳
影响排序效果的因素
因为不同的排序方法适应不同的应用环境和要求,所以选择合适的排序方法应综合考虑下列因素:
①待排序的记录数目n;
②记录的大小(规模);
③关键字的结构及其初始状态;
④对稳定性的要求;
⑤语言工具的条件;
⑥存储结构;
⑦时间和辅助空间复杂度等。
不同条件下,排序方法的选择
(1)若n较小(如n≤50),可采用直接插入或直接选择排序。
当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。
(2)若文件初始状态基本有序(指正序),则应选用直接插人、冒泡或随机的快速排序为宜;
(3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序
查找:
顺序查找:
将每个结点的关键码和给定的待查的关键码值进行比较,直到找出相等的结点或者找遍所有结点;
折半查找:
首先找到表的中间结点,将其关键码与给定的要找的值进行比较,若相等,则查找成功;若当前结点的关键码大于要找的值,则继续在表的前半部分进行折半查找,否则继续在表的后半部分进行折半查找;
分块查找:
散列查找:(hash)
C++:
第十三章,类继承
多态公有继承:
class A { fun()}
class B:public A {fun()}
A a; B b;
A &ab = b;
ab.fun(); //A::fun
class A { virtual fun()}
class B:public A {fun()}
A a; B b;
A &ab = b;
ab.fun(); //B::fun 靠,还好今天讨论了一下,不然完全相反了
编译器对非虚拟方法使用静态联编(static binding , or early binding)
对虚拟方法使用动态联编(dynamic binding, or late binding)
构造函数不能为虚函数,析构函数可以为虚函数,当类作为基类时,析构函数应该是虚拟函数;友元不能是虚拟函数;
重新定义继承的方法并不是重载,如果在派生类中重新定义函数,将不是使用相同的函数特征标覆基类声明,而是隐藏同名的基类方法,不管参数特征标如何;1.如果重新定义继承的方法,应确保与原来的原型完全相同,但如果返回类型是基类引用或指针,则可以修改为指向派生类的引用或指针;2.如果基类声明被重载了,则应在派生类中重新定义所有的基类版本;
windows API:
进程,线程,纤程:
纤程也是程序执行单元,与线程类似.所不同的是纤程必须要应用程序自行调度,而线程是由系统进行调度的.纤程运行于线程的上下文中,一个线程可以调度很多纤程;
线程同步:
http://blog.csdn.net/asmemgsd/archive/2010/09/13/5881962.aspx
相关文章推荐
- 迟到的项目总结
- C语言--第二周作业评分和总结(5班)
- 20162322 朱娅霖 结对编程项目-四则运算 第二周最终版总结
- 20162327WJH四则运算第二周总结
- 迟到的总结(2016年7月16号考试总结)
- 7月19号第二周命令总结
- 10月停课集训第二周总结
- #ZLYD团队第二周项目总结
- 第二周学习总结
- 20162308 2017-2018-2 《程序设计与数据结构》第二周学习总结
- 《Linux内核分析》课程第二周学习总结
- 20155320信息安全系统设计第二周课堂考试总结及myod的实现
- 第二周学习总结
- 20145213《信息安全系统设计基础》第二周学习总结
- 20144303 《信息安全系统设计基础》第二周学习总结
- 暑假第二周总结
- 20145222《信息安全系统设计基础》第二周学习总结
- c语言第二周总结-函数
- 信息安全系统设计基础第二周学习总结
- 第二周总结站立会议07