0

我想知道如何在shell腳本中使用關聯數組時如何構造/實現。shell腳本中關聯數組的時間複雜度

另外,我想知道基於shell腳本的關聯數組的時間複雜度是否最優,因爲我們可以使用字母以及數字作爲它們各自的鍵。

編輯:他們使用什麼散列函數?

+0

請拿一個外殼? – 2011-04-18 23:43:27

+0

以ksh爲例。 ksh93是精確的..這是一個非常普遍的問題,我想要求所有shell雖然 – tomkaith13 2011-04-18 23:50:41

+0

你不能要求它爲「所有shell」 - 它是特定於實現的。 – 2011-04-18 23:53:50

回答

1

如果您使用的是關聯數組,則不會通過「使用字母以及數字作爲其各自的鍵」來訪問它;你正在使用字符串 - 任何數字都是字符表示,而不是實際的索引。

我找不到任何具體的東西來源,但通過大多數帳戶,它似乎在內部它被實現爲散列表(而不是樹),所以你的訪問和插入的平均時間將是O (1)。沒有得到更多的最佳。

+0

@Brian:那麼查找函數如何處理字符串。假設其中一個鍵是「我是查找鍵」,另一個鍵是「我是另一個查找鍵」。內部數據結構如何適應如此龐大的字符串?其次,字符串大小是否有限制? – tomkaith13 2011-04-19 00:22:52

+0

您可能想要閱讀[哈希表](http://en.wikipedia.org/wiki/Hash_table)上的wiki條目以獲取它如何工作的答案。至於密鑰的長度,這將是特定於ksh93,我找不到列出它的任何東西。我想可以想象得到相當長的時間,並且它可能會截短任何太長的東西。 – 2011-04-19 00:28:57

+0

@Brian:非常感謝您的幫助。我熟悉有表格,我正在嘗試查找Solaris中的關聯數組實現。我真的不知道在哪裏尋找它。這就是我把這個問題放在StackOverflow中的原因。我試圖找到開發人員用來將密鑰映射到其各自內存位置的散列函數。再次感謝 – tomkaith13 2011-04-19 00:32:17