博客做業05--查找

1.學習總結

1.1查找的思惟導圖

各類查找的時間複雜度,ASL成功,不成功。都要體現。數組

 

1.2 查找學習體會

首先我認爲學習查找是十分必要的,在這個大數據時代,若是不能利用搜索引擎很快地查找到本身想要的技術資料的話,那麼會很悲劇!特別是面對新技術的時候,因爲資料特別少,就算有,大部分也是英文資料。若是這時候,你查找資料的能力比不上別人的話,頗有可能就會在新一輪的技術競賽中被甩在後面。咱們要跟上時代,就要學習數據的處理和資料的查找技能。這一章的學習,邏輯性很強,讓我受益不淺。從繁瑣到簡單,到時間複雜度一直下降,我以爲技術是不斷完善的過程,我也應該不斷進步。學習

2.PTA實驗做業(4分)


2.1

1.題目1:6-2 是否二叉搜索樹

2. 設計思路(僞代碼或流程圖)

bool IsBST(BinTree T)大數據

{      若T是空樹則是二叉樹;搜索引擎

        中序遍歷該樹獲得的新節點的值必定要大於前一個值,不然返回false;設計

        返回true;指針

}blog

3 代碼截圖

 

4. PTA提交列表說明。

部分正確:用了比較簡單的思路,致使有兩個試點不能過,用了老師教的中序遍歷和遞歸一塊兒使用,代碼量也少了,各方面的特殊狀況均可以經過。遞歸

2.2

1.題目2:6-3 二叉搜索樹中的最近公共祖先

2. 設計思路

 int search(Tree T,int u);索引

int LCA(Tree T,int u,int v)博客

{

       若樹爲空或者u或v不在該樹中,error;,

      若u或者v就是根節的值,return T->Key;

      若u或者v在同一棵子樹上,return T->key;

      若u小於T->key 最近共同祖先在左子樹上;

      若u大於T->key 最近共同祖先在右子樹上;

}

int search (Tree T,int u)

(

    若樹爲空:則不在;

    查找該樹:

                若找到等值的Key,則u在該樹中;

                不然不在;

}

3.代碼截圖

 

2.4 PTA提交列表說明

 

有些狀況沒有考慮到,致使了部分正確

2.3

1.題目3:7-1 QQ賬戶的申請與登錄

2. 設計思路

 這個超出了個人能力,屬於百度瞭解的題

3. 代碼截圖

 

3.截圖本週題目集的PTA最後排名

 

4. 閱讀代碼

hash_map,顧名思義,就是利用hash_set存儲結構的寫map映照容器,普通的map用的是紅黑樹存儲結構寫的。元素的檢索時間對比,hash_set近似爲O(1),紅黑樹爲O(logn)。Hash_map的空間開銷要比map 的空間開銷大,尤爲是我用數組模擬指針寫的hash_map。

因此,若是有必要採起映射結構的時候,能用hash_map就別用map。

須要注意的是,hash_map遍歷出來的元素不是有序的。

Hash_map和普通hash_set相比的話,hash_map比hash_set多了一張value表,也就是映射表。

下面是hash_map的模板,和hash_set的模板差很少。

template<class KeyType,int MaxHash> struct HashFunction {     int operator()(const KeyType& key)     {         int h=key%MaxHash;         if (h<0) h+=MaxHash;         return h;     } }; template<class KeyType,class ValueType,int KeyContain,int MaxHash,class HashFun=HashFunction<KeyType,MaxHash> > class HashMap { public:     HashMap():hashfun(){Clear();}     ValueType& operator[](const KeyType& key)     {         int h=hashfun(key);         int pos=head[h];         for(;pos!=0;pos=next[pos])         {             if(keys[pos]==key)                 return values[pos];         }         next[++top]=head[h];         head[h]=top;         keys[top]=key;         values[top]=ValueType();//初始化         ++sz;         return values[top];     }     void Clear()     {         memset(head,0,sizeof(head));         memset(next,0,(top+1)*sizeof(int));         top=0;         sz=0;     }     unsigned int size() const {return sz;} private:     unsigned int sz;     HashFun hashfun;     int head[MaxHash];     int next[KeyContain];     KeyType keys[KeyContain];     ValueType values[KeyContain];     int top; };
相關文章
相關標籤/搜索