在前兩次博文中,我們由線性表講到數組,然后又由數組的缺陷提出了指針式鏈表。但是指針式鏈表也不是完美無缺的,在某些沒有指針數據類型的編程語言中,指針式鏈表是無法由我們來實現的,但是有時候我們又希望能用上鏈表,因為鏈表可以快速的進行插入和刪除。這個時候我們就可以使用一種由數組來實現的“鏈表 ...
在深入淺出數據結構系列前面的文章中,我們一直在討論 線性表 ,其形式如下: 由a ,a ,a , a n 個元素組成的序列,其中每一個元素ai lt i lt n 都是一個 原子 , 原子 的意思就是說元素本身是一個個體,所有元素都是相同的結構。 但是在我們常見的某些應用,比如Excel的表格中,我們發現表並不一定是線性表,Excel中的表就明顯是二維的結構 那么在數據結構中,我們會使用這種廣義 ...
2017-05-22 17:14 0 2054 推薦指數:
在前兩次博文中,我們由線性表講到數組,然后又由數組的缺陷提出了指針式鏈表。但是指針式鏈表也不是完美無缺的,在某些沒有指針數據類型的編程語言中,指針式鏈表是無法由我們來實現的,但是有時候我們又希望能用上鏈表,因為鏈表可以快速的進行插入和刪除。這個時候我們就可以使用一種由數組來實現的“鏈表 ...
在上一篇博文中我們提到:要令排序算法的時間復雜度低於O(n2),必須令算法執行“遠距離的元素交換”,使得平均每次交換減少不止1逆序數。 而希爾排序就是“簡單地”將這個道理應用到了插入排序中, ...
正如上一篇博文所說,今天我們來討論一下所謂的“高級排序”——快速排序。首先聲明,快速排序是一個典型而又“簡單”的分治的遞歸算法。 遞歸的威力我們在介紹插入排序時相比已經見識過了:只要我前面的 ...
到目前為止,我們一直在談論的數據結構都是“線性結構”,不論是普通鏈表、棧還是隊列,其中的每個元素(除了第一個和最后一個)都只有一個前驅(排在前面的元素)和一個后繼(排在后面的元素),但是在(9)中,我們發現有的時候“線性結構”是不能滿足我們的需求的,必然存在某些場景需要我們使用非線性的數據結構 ...
第4章 數組和廣義表 【例4-1】二維數組A的每一個元素是由6個字符組成的串,其行下標i=0,1,…,8,列下標j=1,2,…,10。若A以行為主序存儲元素,A[8][5]的物理地址與當A按列為主序存儲時的元素( )的物理地址相同。設每個字符占一個字節。 A.A[8][5] B.A ...
上一篇博文我們提到了圖的最短路徑問題:兩個頂點間的最短路徑該如何尋找?其實這個問題不應該叫“最短”路徑問題,而應該叫“最便宜”路徑問題,因為有時候我們會為圖中的邊賦權(weight),也叫權重,相 ...
到目前為止,我們所提過的所有數據結構,不是線性表,就是樹。即使是散列表、優先隊列、AVL樹這樣看似特殊的數據結構,其實也沒逃出線性表與樹的范疇,那么,在數據結構方面(如果是說算法方面,那么與線性表、樹相關的算法可講不完),還有什么我們尚未探討的情況嗎? 答案是肯定的,那就是:圖 ...
在普通隊列中,元素出隊的順序是由元素入隊時間決定的,也就是誰先入隊,誰先出隊。但是有時候我們希望有這樣的一個隊列:誰先入隊不重要,重要的是誰的“優先級高”,優先級越高越先出隊。這樣的數據結構我們稱之為優先隊列(priority queue),其常用於一些特殊應用,比如操作系統控制進程的調度程序 ...