迟到的第二周总结

上一周自学:

数据结构:本来打算是排序,没想到顺便把查找也看完了

排序分为

插入排序:直接插入,折半插入,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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章