DS部落格作業07 查詢

2022-04-09 20:59:29 字數 3193 閱讀 7167

1.思維導圖

2.談談你對查詢運算的認識及學習體會。

①.學習了許多查詢的方法,比如:線性表中的順序查詢、折半查詢、分塊查詢。順序我們之前也接觸過,而折半查詢較為順序查詢的一種改進,這種改進使效率快了許多。

②.樹錶類的查詢:二叉排序樹、平衡二叉樹、還有b_/+樹。其中難操作的是平衡二叉樹的失衡調整,ll和rr好做,比較容易出錯的是lr型和rl型,不容易分清,不過理解之後還勉勉強強吧。

③.雜湊的查詢:之前老師提過雜湊陣列,現在具體來學。雜湊是一種空間換時間的演算法,雜湊衝突尋找key,在計算不成功asl時會把分母記為表的長度。雜湊可以把查詢效率達到o(n)。

④.總的來說這章的內容細節多,還容易記混,雖然這章對**沒有要求,不過涉及前面所學的一些知識內容,而之前學的時間長了沒有及時複習都記憶都模糊了。

insert 函式: 

if是否是乙個空結點

如果不是空則生成乙個空結點

else

如果已經存在什麼都可不做;

return bst;

find 函式:

while

} end while 找不到返回null

findmin函式:

利用遞迴思想一直尋找到左子樹,如果左子樹為空即為到}

return bst;

else

return findmin(bst->left

finmax函式:

與findmin函式一樣,利用遞迴思想一直找右子樹。

delete函式:

定義乙個 position temp;

if(樹為空即沒有)

- q:部分正確,說明整體的**是沒有錯的,檢視**發現刪除只有乙個結點時,刪除完之後應該是空樹,同時是空樹的情況也就是沒有節點的應該是錯誤的。

- a:判斷只有乙個結點的情況,刪除操作結束後應該是空樹,也就是最終樹。

main函式:定義 n//個數

!!!getchar();//擋掉回車操作

for(i to n )

getnextprim函式:找最小素數

就是乙個遍歷查詢過程,emmmm.....判斷是不是最小的素數即可,

hash函式:就是乙個求餘,把它單獨寫出來而已

hashtable createtable:函式:emmmm....與之前的建立沒有不同什麼可以說的,注意的是h->heads也要申請動態空間。

insert函式:在找到位置後,依次比較資訊是否正確,if(所找不為空) printf("exit!")

else

login函式:

end while

if(user==null) //說明使用者名稱不存在

- 看同學的部落格看到map來做,**簡潔不少,利用map容器的一一對應的處理資料的能力,在匹配時也要快一些

定義maptable;//保證數值可以大一些

定義常量n,k

輸入n,k

while(n--)

輸入客戶身份證號碼id/校驗碼c以及里程的長度len

if(c=='x') 下乙個id

if (長度小於k) 也按k算

if(!table.count(id)//如果使用者不存在重複 table[id]=0

否則進行累加

end while

輸入nfor int i=0 to m do

輸入查詢的身份證號碼

if(c=='x') 下乙個id

if(使用者存在直接輸出)printf("table[id]");

否則輸出no info

- q1:map定義的為-  a1:應該改為map來保證數值足夠大

- q2:用cin來讀取資料

- a2:改為scanf來輸入資料,把提交型別改為c而不是c++

如果珂珂能以k的進食速度吃完所有香蕉在h小時內,那麼她也可以用更快的速度的吃完,當珂珂能以k的速度吃完香蕉是,我們就令possible(k)為true,那麼存在x使得當k>=x,possible(k)=true
這道題是用二分法解決,時間複雜度o(n\logw),n為香蕉數量,w為最大香蕉的大小;空間複雜度為o(1)。用二分法來找到possible(k )的值來找第乙個的使possible(x)為true的x,在迴圈中,不變的possible(hi)true,lo總<=答案,最後我們猜測珂珂將會在math.ceil(p/k)=((p-1)/k)+1小時內吃完這一推香蕉,將沒一堆的時間總和與h進行比較。二分法在這道題中和我們平時學習的沒有什麼不同,同樣是分為兩部分,選取中間值,這道題的不好思考如果不是看題解的話要自己做不太能想到是這樣子解法。

DS部落格作業07 查詢

本題要求實現函式,判斷給定二叉樹是否二叉搜尋樹。isbst函式傳入二叉樹t 定義bintree型變數 tleft tright ift為空且左右子樹皆為空 返回true end if 遍歷左子樹 tleft接受返回值 end if 遍歷右子樹 tright接受返回值 end if 返回 左子樹最右節...

DS部落格作業07 查詢

二叉排序樹難度比較大,首先是插入關鍵字的時候就必須注意,如果關鍵字插入就出現錯誤,那接下來對樹的操作就會錯誤。樹的另乙個難點是平衡二叉樹插入結點過程中的調整,雖然只有ll,rr,lr,rl四種調整,看課本也可以理解,但是當實際操作的時候還是難度比較大,必須先確定是插入的哪個結點導致了樹的不平衡,然後...

DS部落格作業07 查詢

在學習本章的知識前,我們得先掌握之前的二叉樹的內容,這樣才能順利的掌握課本知識。在程式設計前要先想清楚思路再開始寫 靈活地利用書上的知識。對於書上的演算法 我們一定要仔細鑽研每一步的具體含義和目的,在此基礎上深入的了解演算法的實現過程,在查詢時利用書中給出的各種方法可以極大地減少時間複雜度,從而提高...