路飞学城Python-Day171
生活随笔
收集整理的這篇文章主要介紹了
路飞学城Python-Day171
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Evernote Export
線性結構: python的列表操作 列表是如何存儲的:順序存儲的,是一塊連續的內存,內存是一堆格子,列表是一串連續的編號 32位機器上一個整數占4個字節 數組和列表有2點不同,1.數組的元素類型要求是相同的;2.數組長度固定 列表:1.python中列表的元素類型可以不同(python列表中存儲的不是數值而是地址);2.python列表會根據輸入的長度自動根據序列來遞增列表 列表的append時間復雜度是O(1) 列表的插入和刪除的時間復雜度是O(n) 棧的結構: 棧是一個數據集合,可以理解為只能在一端插入或進行刪除操作的列表 棧的特點:后進先出LIFO(last in first out) 棧的概念:棧頂、棧底 棧的基本操作: ? ? 進棧(壓棧):push? ? 出棧:pop
? ? 取棧頂:gettop
棧的應用 括號匹配問題:給一個字符串,其中包括小括號、中括號、大括號、求該字符串中的括號是否匹配 隊列 隊列是一個數據集合,僅允許在列表的一端進行插入,另一端進行刪除 進行插入的一端稱為隊尾(rear),插入動作稱為進隊或入隊 進行刪除的一端稱為隊頭(front),刪除動作稱為出隊 隊列的性質:先進先出(First-in, First-out) 迷宮的兩種方式 棧-深度優先搜索 思路:從一個節點開始,任意找下一個能走的點,當找不到能走的點,退回上一個點尋找是否有其他方向的點 使用棧存儲當前路徑 隊列-廣度優先搜索 思路:從一個節點開始,尋找所有接下來能繼續走的點,繼續尋找,直到找到出口 使用隊列存儲當前正在考慮的節點 鏈表 鏈表是一種線性數據結構,鏈表是由一系列節點組成的元素集合。 每個節點包含兩個部分,數據域item和指向下一個節點的指針next。通過節點之間的相互連接,最終串聯成一個鏈表。 創建鏈表: ? ? 頭插法
? ? 尾插法
復雜度分析 按元素值查找O(n) 按下標查找O(n) 在某一元素中插入O(1) 刪除元素O(1) 鏈表在插入和刪除的操作上明顯快于順序表 鏈表的內存快于靈活的分配:試利用鏈表重新實現棧和隊列 鏈表這種鏈式存儲的數據結構對樹和圖的結構有很大的啟發性 哈希表(散列表) 哈希表通過哈希函數來計算數據存儲位置的數據結構,通常支持一下操作 insert(key,value):插入鍵值對(key,value) get(key):如果存在鍵為key的鍵值則返回其value,否則返回空值 delete(key):刪除key的鍵值對 直接尋址表 當關鍵字的全域U比較小時,直接尋址是一種簡單而有效的方法 直接尋址的技術缺點: 當域U很大時,需要消耗大量內存,很不實際 如果域U很大而實際出現的key很少,則大量空間被浪費 無法處理關鍵字不是數字的情況 哈希表,是一種線性表的存儲結構。哈希表由一個直接尋址表和一個哈希函數組成,哈希函數h(k)將元素關鍵字k作為自變量,返回元素的存儲下標 假設有一個長度為7的哈希表,哈希函數h(k) =?k%7,元素集合{14,22,3,5}的存儲方式如下圖 哈希沖突 由于哈希的大小是有限的,而要存儲的值的總數量是無限的,因此對于任何哈希函數,都會出現兩個不同的值但是映射到同個位置上的情況,這種情況稱為哈希沖突 解決哈希沖突方法 1.開放尋址法:如果哈希函數返回的位置已經有值,則可以向后探查新的位置來存儲這個值 線性查探:如果位置被占用,則探查i+1,i+2... 二次查探:如果位置i被占用,則探查i+1^2,i-1^2,i+2^2,i-2^2 二度哈希:有n個哈希函數,當使用第一個哈希函數h1發生沖突時,則嘗試使用?h2,h3... 2.拉鏈法:哈希表每個位置都連接一個鏈表,當沖突發生時,沖突的元素將被加到該位置鏈表的最后 樹與二叉樹 樹是一種結構,比如目錄結構 樹是一種可以遞歸定義的數據結構 樹是由n個節點組成的集合 ? ? 如果n=0,那這是一顆空樹
? ? 如果n>0,那存在1個節點作為樹的根節點,其他節點可以分為m個集合,每個集合本身又是一棵樹
二叉搜索樹 二叉搜索樹是一顆二叉樹且滿足性質:設x是二叉樹的一個節點。如果y是x左子樹的一個節點,那么y.key<=x.key 如果y是x右子樹的一個節點,那么y.key>=x.key 二叉搜索樹的操作:查詢、插入、刪除 ? ? ? ? ? ? ? ? ? ? ? ? ?
?
轉載于:https://www.cnblogs.com/pandaboy1123/p/10098961.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的路飞学城Python-Day171的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python数据图形化—— matplo
- 下一篇: Python学习---面向对象的学习[深