嚴蔚敏演算法約瑟夫環 學習分享 資料結構與演算法

2021-10-14 14:45:15 字數 2842 閱讀 9718

舊知答疑

針對前期學習,有同學提出對蛇形矩陣的生成有疑惑之處,張子恆學長為我們重新分析解答。

蛇形矩陣的講解

#蛇形矩陣

蛇形矩陣中容易發現,中心對稱的元素的和是相同的,蛇形矩陣在列印出上三角之後,先通過矩陣的大小n,知道最後乙個元素為n*n,可以利用中心對稱,每組對稱的元素之和都是第乙個和最後乙個元素的和。**如下: 

新知科普

對於我們即將正式接觸的資料結構與演算法,學長認為這一內容並非如大家想象中難以攻克,他帶領我們建立了這門學科的基本框架。

# 01  資料結構

集合結構

資料結構中的元素之間除了「同屬乙個集合」 的相互關係外,別無其他關係,組織形式鬆散。

#

線性結構

線性結構指的是資料元素之間存在著「一對一」的線性關係。線性表、棧、佇列和串等都屬於線性結構,其中,線性表是經典的線性結構。線性表具有順序儲存結構和鏈式儲存結構兩種,該種線性表分別稱為順序表和煉表:

1-順序表

按照我們的習慣,存放東西時,一般是找一塊空間,然後將需要存放的東西依次擺放,這就是順序儲存。計算機中的順序儲存是指在記憶體中用一塊位址連續的空間依次存放資料元素,用這種方式儲存的線性表叫順序表其特點是,表中相鄰的資料元素在記憶體中儲存位置也相鄰,如下圖:

2-鍊錶

假如我們現在沒有足夠大的空間將所有的物品一次性放下,同時設定只能記住一件物品位置。此時我們很機智的找到了解決方案:存放物品時每放置一件物品就在物品上貼乙個小紙條,標明下一件物品放在那裡,只記住第一件物品的位置,尋找的時候從第一件物品開始尋找,通過小紙條我們可以找到所有的物品,這就是鏈式儲存。鍊錶實現的時候不再像線性表一樣只儲存資料即可,還有下乙個資料元素的位址,因此先定義乙個節點類(node),記錄物品資訊和下一件物品的位置,我們把物品本身叫做資料域,儲存下一件物品位址資訊的小紙條稱為引用域。鍊錶結構示意圖如下:

2-1單鏈表

單鏈表的每乙個節點只有乙個next後繼指標域,所以在遍歷這個鍊錶的時候,只能夠單向的從前向後進行遍歷不能夠從後向前進行遍歷。

2-2雙向鍊錶

如果我們在鍊錶的節點中定義兩個指標域,乙個指向當前節點的下乙個節點,乙個指向當前節點的前乙個節點那麼我們就可以從前後兩個方向來遍歷這個鍊錶,由此也就產生了雙鏈表結構。

2-3迴圈鍊錶如果乙個鍊錶的最後乙個節點的後繼指標域並不是指向null,而是回過頭來直接指向第乙個儲存資料的節點那麼這種結構就形成了環鏈表結構,也稱之為迴圈鍊錶迴圈鍊錶結構在諸如磁碟模擬演算法、解決約瑟夫環問題等場景下,有著大量的應用。

#

樹形結構樹是典型的非線性結構,它是至少2個結點的有窮集合k。在樹結構中,有且僅有乙個根結點,該結點沒有前驅結點。而其他結點都有且僅有乙個前驅結點,而且可以有兩個或多個後繼結點。

#

圖形結構圖是另一種非線性資料結構。在圖結構中,資料結點一般稱為頂點,而邊是頂點的有序偶對。如果兩個頂點之間存在一條邊,那麼就表示這兩個頂點具有相鄰關係。

# 02  演算法

# 時間複雜度

時間複雜度是指執行演算法所需要的計算工作量。一般來說,計算機演算法是問題規模n 的函式f(n),演算法的時間複雜度也因此記作t(n)=ο(f(n)),問題的規模n 越大,時間複雜度越大。

#空間複雜度

演算法的空間複雜度是指演算法需要消耗的記憶體空間。其計算和表示方法與時間複雜度類似,一般都用複雜度的漸近性來表示。同時間複雜度相比,空間複雜度的分析要簡單得多。

寒來暑往,秋收冬藏,祝眉目舒展,順問冬安。

編       輯:董   燕

審       核:曹永強   董   燕

嚴蔚敏演算法約瑟夫環 分享400多道演算法題,誰來挑戰

可以看下部分系列文章 動態規劃相關演算法 465.遞迴和動態規劃解三角形最小路徑和 430,劍指 offer 動態規劃求正規表示式匹配 423,動態規劃和遞迴解最小路徑和 413,動態規劃求最長上公升子串行 411,動態規劃和遞迴求不同路徑 ii 409,動態規劃求不同路徑 407,動態規劃和滑動視...

資料結構 嚴蔚敏

最近一直想找一本純資料結構的書來學習,找來找去都沒有找到一本合適的書籍,相比之下國內的書籍之中,嚴蔚敏和吳偉民的還算是經典版了,很多國內其他資料結構教材都參考這本書的。但缺點是很多都是偽 對程式設計初學者來說有一些難度,甚至有些考研的同學來看這本書有很多還看不懂,並且裡面也有些容易迷惑人的地方。出於...

資料結構(嚴蔚敏)

說起為什麼重新拿起這本書,著實非常慚愧。是因為面試的時候,第乙個面試官面試完專案之後。第二面試官說我們就當聊聊天,考考資料結構,演算法就好了。結果以乙個問題就把我難住了,這個問題是 雜湊表是什麼?所以我打算花兩天的時間重新把這本書看一遍,並做下筆記,這次我一定會記住。目前,計算機已深入到社會生活的各...