原创 python中的深拷貝與淺拷貝

python中的淺拷貝與深拷貝 淺拷貝僅僅複製了容器中元素的地址 >>> L = [1, 2, 3] >>> M = ['X', L, 'Y'] >>> M ['x', [1, 2, 3], 'L'] >>> L.append

原创 python基礎知識

python編碼風格 對於Python,PEP 8 已經成爲大多數項目所遵循的風格指南;它促進了一種非常易讀且令人賞心悅目的編碼風格。每個Python開發人員都應該在某個時候閱讀它;以下是爲你提取的最重要的幾個要點: 使用4個

原创 插入排序

插入排序的基本思想: 1、從第一個元素開始,該元素可以認爲已經被排序 2、取出下一個元素,在已經排序的元素序列中從後向前掃描 3、如果該元素(已排序)大於新元素,將該元素移到下一位置 4、重複步驟3,直到找到已排序的元素小於或者等

原创 【每天一點算法】模糊控制器的設計

概述 模糊控制器是以模糊集合論、模糊語言變量、模糊邏輯推理爲基礎的一種智能控制方法。關於這三個方面的基礎知識,不知道的,自己去補充。 模糊集合理論: 一種描述模糊現象的方法,隸屬度函數是它的核心概念。 模糊語言變量: 主要有四個方

原创 優先隊列的基本思想與簡單實現

在我的一篇文章隊列中,我簡單地介紹了什麼是隊列,以及隊列有哪些操作,一個數據結構能夠被稱爲隊列,它必須具備兩個功能限制:數據只能在隊尾插入,數據只能在隊首刪除。這兩個功能限制註定了它只能順序地處理隊列裏面的任務,但是有時候一個隊列

原创 python的執行過程

當我們寫好一個.py文件後,我們會先把它交給編譯器編譯,生成對應的.pyc文件,這個.pyc文件是字節碼文件,之後這個字節碼文件會被送個python虛擬機來進行解釋執行。如下圖所示。

原创 【每天一點算法】Floyd最短路徑算法

Floyd最短路徑算法是基於這樣一個事實:從viv_ivi​到vjv_jvj​的最短路徑總是先從v1v_1v1​沿着一條路到某一點viv_ivi​,再沿(vi, vj)(v_i,\ v_j)(vi​, vj​)到vjv_jvj​。

原创 【每天一點算法】遞歸算法設計總結

今天被遞歸算法困擾了好久,感覺這真是個很神奇的算法,可以用那麼簡短的幾行代碼處理那麼複雜的問題,下面就對其進行總結。 首先我們要來看幾個經典的例子,這裏只是介紹幾個很簡單的例子來簡單理解,因爲我覺得看博客的你一般都只是想快速瞭解,

原创 二叉查找樹

二叉查找樹在查找中有着重要的應用,一個二叉樹變成一個二叉查找樹後所具有的性質是:對於樹中的所有結點,它的左子樹中的所有關鍵字的值小於該結點的關鍵字值,它的右子樹中所有關鍵字的值大於該結點關鍵字的值。這就是二叉查找樹。自己腦補一下什

原创 雙向鏈表的操作

一、雙向鏈表的創建 雙向鏈表的結點結構體有兩個指針,一個指向前向結點,一個指向後繼節點,創建步驟和單向鏈表差不多 typedef struct DNode { int data; struct DNode *fro

原创 單鏈表操作

一般創建表有兩種方式:基於數組、基於結點。由於表經常需要實現在表的中間某個位置實現插入或者刪除的操作,而且表的大小很多時候是未知的。但數組大小是創建表的時候就指定了,而且插入刪除是十分耗時的(由於數組是連續存儲的,所以需要整體移動

原创 二級指針與數組指針是不一樣的

今天早上遇到一個問題,我想向函數裏面傳送一個二維數組int Matrix[MAX][MAX]int \ Matrix[MAX][MAX]int Matrix[MAX][MAX],我採用的方法是二級指針,我當時的考慮是二維數組名的二

原创 單向循環鏈表操作

循環鏈表的好處: 1、任何節點都可以做爲頭節點。 可以從任何節點開始進行鏈表的遍歷。只要當第一個節點被重複訪問時,則意味着遍歷結束。 2、用於實現隊列數據結構是很有幫組的。 如果使用循環鏈表,則不需要爲了隊列而維護兩個指針(fro

原创 棧的實現與操作

棧的實現也有兩種方式:數組方式、和鏈表方式,我們前面知道表也是兩種方式,但是由於表經常要在表的中間刪除或插入數據,所以用數組實現不是一種很好的選擇,我們通常採用結點實現。但是在棧中,這種情況發生了變化,棧是一種LIFO性質的線性表

原创 隊列

隊列,又稱爲佇列(queue),是先進先出(FIFO, First-In-First-Out)的線性表。在具體應用中通常用鏈表或者數組來實現。隊列只允許在後端(稱爲rear)進行插入操作,在前端(稱爲front)進行刪除操作。 -