Random access
Random access---wikipedia
在計算機科學中,隨機訪問(更準確并且更普遍的叫法是直接訪問)是從大量的可尋址元素的數據中訪問任何元素大致和訪問其他元素一樣簡潔有效,不管多少元素在這個集合中。與隨機訪問相反的是順序訪問
例如,數據理論上可以以一維結構儲存,例如行,以二維結構儲存,例如一個平面的行和列(坐標系),或者更多維度。無論如何,給定坐標,一個程序可以快速有效的訪問任意坐標點,在這個層面上來說,數據項的選擇是任意的,無論要尋找哪個數據項,找到它都需要它的地址,也就是說,它所位于的坐標。一開始是用術語"random access",因為process不管在哪個序列都能根據需求找到記錄,然而很快,大家覺得術語"direct access"更貼切,因為不管記錄在哪,都能直接檢索。但是不管術語是怎么叫,操作屬性都是,設備能根據需求立即訪問任何記錄。相對的是順序訪問,表示更遠的元素需要更長的時間去訪問
直接訪問和順序訪問差別的直觀的例子是,古代的卷軸和圖書,要看卷軸的內容需要一點一點展開,就像順序訪問一樣,而圖書就像直接訪問,直接翻到想看的那一頁就可以。一個更現代的例子是磁帶和CD,在磁帶中要聽后面的歌需要跳過前面的歌,但是在CD中可以任意聽任一首歌
在數據結構中,直接訪問意味著訪問列表的任意一項的時間是固定的(不管在列表的位置和列表的規模)。但是很少的數據結構能保證這一點,除了數組(和相關的結構例如動態數組)。在許多數據結構中,直接訪問是必需而且有意義的,例如binary search, integer sorting或者某些版本的sieve of Eratosthense。
其他的數據結構,例如鏈表,犧牲直接訪問來保證有效的插入,刪除或者記錄數據。Self-balancing binary search tree提供了可接受的折中,對于集合中所有成員的訪問時間是不相等的,但是檢索給定成員的最大時間僅以其大小的對數增長
Sequential access
Sequential access---wikipedia
在計算機科學中,順序訪問意味著一組元素(例如內存數組中的數據,或磁盤文件,或磁帶數據存儲器)以預定的,有序的序列被訪問,順序訪問有時是訪問數據的唯一方式,例如訪問磁帶的數據。它有時也是可選的訪問方法,例如,如果想要有序的處理一序列數據元素
然后,順序訪問或順序性沒有一致的定義,事實上,不同的順序性定義會導致不同的順序性量化結果。在空間維度上,請求大小,跨越距離,方向訪問,重復訪問都可能影響順序性。對于時間順序性,諸如多流和到達間隔的時間閾值等特征對順序性的定義有影響
在數據結構中,如果訪問某個值必需以特定的順序,那么數據結構就是順序訪問。典型的例子就是鏈表,索引到具有順序訪問的列表需要O(n)的時間復雜度,其中n為索引。結果,許多算法例如quicksort和binary search退化成低效的算法,甚至比原來的算法效率更低,這些算法如果不使用隨機訪問是不實際的。在另一方面,某些算法,通常是沒有索引的算法,恰恰需要順序訪問,例如mergesort,而沒有副作用