遲到的第二週總結

上一週自學:

數據結構:本來打算是排序,沒想到順便把查找也看完了

排序分爲

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

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